如何使用ImageMagick在图像上的多个位置放置水印

时间:2017-04-20 17:10:47

标签: imagemagick imagemagick-convert

我目前正在通过命令行使用imagemagick在另一个图像上的多个位置放置水印,但我这样做的方式似乎可能不是最好的方法。

以下是我的表现:

exec("convert 'originalImage.jpg' 'watermark.jpg' -gravity NorthWest -geometry +3+3 -define compose:args=30,100 -compose dissolve -composite 'finalImage.jpg'");
exec("convert 'finalImage.jpg' 'watermark.jpg' -gravity NorthEast -geometry +3+3 -define compose:args=30,100 -compose dissolve -composite 'finalImage.jpg'");
exec("convert 'finalImage.jpg' 'watermark.jpg' -gravity SouthWest -geometry +3+3 -define compose:args=30,100 -compose dissolve -composite 'finalImage.jpg'");

这是(1)使用originalImage.jpg并将watermark.jpg添加到左上角(左上角为3px,使用30%不透明度),然后(2)获取最终的finalImage.jpg和将水印添加到右上角,然后(3)再次获取finalImage.jpg并在左下角添加水印。

所以它重新创建文件三次以得出最终图像。有没有一种简便的方法来做同样的事情,而不必分别保存文件三次?

谢谢!

2 个答案:

答案 0 :(得分:1)

以下是使用多个“-draw”选项的另一种解决方案: “-draw”没有“解散”选项,所以你需要准备 水印图像提前有30%的alpha。

convert watermark.jpg -alpha set -channel alpha -fx .30 watermark30.png
convert originalImage.jpg \
   -gravity NorthWest -draw "image over 3,3 0,0 watermark30.png" \
   -gravity NorthEast -draw "image over 3,3 0,0 watermark30.png" \
   -gravity SouthWest -draw "image over 3,3 0,0 watermark30.png" \
   finalImage.jpg

您可以将此与Mark的好建议结合使用MPR格式而不是watermark30.png。我做了一些“-draw”与“-composite”时序测试,看起来Mark的方法有点快。

我希望你不介意我编辑你的帖子 - 如果你愿意的话删除它 - 但是这里是一个单一的命令看起来如何一气呵成:

convert watermark.jpg -alpha set -channel alpha -fx .30 -write MPR:wm30 +delete original.jpg \
   -gravity NorthWest -draw "image over 3,3 0,0 'MPR:wm30'" \
   -gravity NorthEast -draw "image over 3,3 0,0 'MPR:wm30'" \
   -gravity SouthWest -draw "image over 3,3 0,0 'MPR:wm30'" \
   finalImage.jpg

enter image description here

答案 1 :(得分:0)

不是在计算机上,未经测试,但这应该是关闭的:

convert originalImage.jpg \( watermark.jpg -write MPR:wm \) \
   -define compose:args=30,100 -compose dissolve            \
          -gravity NorthWest -geometry +3+3 -composite      \
   MPR:wm -gravity NorthEast -geometry +3+3 -composite      \
   MPR:wm -gravity SouthWest -geometry +3+3 -composite finalImage.jpg

MPR是一个基于RAM的" Magick Persistent Register" ,我用它来避免重新阅读watermark.jpg

compose参数会一直存在,直到更改为止,因此我不会重复这些参数。可能没有必要重复第二和第三-geometry

相关问题