ImageMagick合成图像前会先调整大小

5
我正在使用ImageMagick的composite命令将一个较小的图像合成到一个较大的图像上。合成后的图像应该与背景图像(即较大的那个)大小相同。此外,我希望较小的图像始终保持相同的大小。
目前,我的调用非常简单:
composite -gravity SouthWest watermark.png photo.jpg photo.jpg

问题在于,我得到的不同照片的水印大小不同,我不知道如何设置为固定大小。我尝试了-resize、-geometry和-size选项,但它们都会改变生成图像的大小,而不是水印。

2个回答

5

我曾经遇到类似的问题,尝试了各种组合命令来尝试让它工作。最终,我不得不转而使用convert命令,并且能够使用gravity进行调整大小:

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

-draw 的数字参数是 left,top,width,height。请参见 http://www.imagemagick.org/script/command-line-options.php?#draw。因此,该解决方案不再使用 composite 命令,但希望能给您想要的结果。

4

太好了!

我在ImageMagick手册的一个小笔记中找到了答案,它说-resize '1x1<'实际上是缩放操作的无操作(并且短路)。

因此,如果我有一张1200x1200的图像.jpg,并使用以下命令叠加一个600x600的copyright.png:

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

根据版权.png规定,我的图片被重新调整大小为600x600。

但是,如果我按照以下方法操作:

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

我的输出图像保留了其原始大小为1200x1200。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接