开发者

ImageMagick composite resizes image before composing

I'm using ImageMagick's composite command to compose one smaller image over larger one. The resulting image should be of size of the background image (the larger one). Additionally I want the smaller one to be always of th开发者_JAVA百科e same size.

Currently I have such a simple invocation:

composite -gravity SouthWest watermark.png photo.jpg photo.jpg

The problem is that I get different sizes of watermark for different photos and I don't know how to set it to be fixed size. I tried -resize, -geometry and -size options but all of them change size of resulting image and not the watermark.


I had a similar problem and tried all sorts of different options with the composite command to try to get it to work. Eventually I had to switch to using the convert command and was able to get it to resize with gravity using:

convert photo.jpg -gravity SouthWest -draw "image Over 0,0,200,200 watermark.png" photo.jpg

The numeric parameters for -draw are left,top,width,height. See http://www.imagemagick.org/script/command-line-options.php?#draw. So this solution no longer uses the composite command but hopefully gives you what you want.


Hurraaay!

I have found the answer from a little note in the ImageMagick manual that says -resize '1x1<' is essentially a no-op (and SHORT-CIRCUIT) for the resize operation.

So, if I have a 1200x1200 image.jpg and I overlay it with a 600x600 copyright.png, using this command:

composite -dissolve 50% -gravity center image.jpg copyright.png result.jpg

my image gets resized to 600x600 as per the copyright.png.

However, if I do the following:

composite -resize '1x1<' -dissolve 50% -gravity center image.jpg copyright.png result.jpg

my output image retains its orginal size of 1200x1200.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜