ImageMagick多次应用水印

时间:2017-08-11 16:35:27

标签: imagemagick batch-processing imagemagick-convert

目前,使用ImageMagick,我使用以下watermark.png在中心picture.jpg上方使用:

convert -size 700x1300 -composite picture.jpg watermark.png -gravity center -geometry 700x1300 output.jpg

这很好地覆盖了我在图像中间的水印。但是,我想在左上角,中间和右下角实现这种效果。我尝试过组合多个-composite但没有结果。我想避免调用3个不同的命令以避免它引入的额外开销,但我开始相信它不可能不这样做。

如何在一个命令NorthWestCenterSouthEast中实现三个水印位置?

2 个答案:

答案 0 :(得分:2)

使用“-write mpr:watermark”将水印图像保存在存储器寄存器中,然后将其调用到第二个和第三个复合的命令中。这是一个如何运作的简单例子......

convert watermark.png -write mpr:watermark input.png +swap \
  -gravity center -composite mpr:watermark -gravity northwest -composite \
  mpr:watermark -gravity southeast -composite output.png

如果需要,在每个复合材料之前设置几何图形,以便从角上为标记添加一些填充。

答案 1 :(得分:1)

在Imagemagick中,有一个重力设置,允许您将水印放在罗盘方向指定的不同位置。见http://www.imagemagick.org/script/command-line-options.php#gravity。但是,您的语法不正确,可能无法与IM 7一起使用。正确的语法是首先读取输入图像。所以你的命令应该是

convert background watermark -gravity center -compose over -composite output

将中心更改为其他重力设置之一,例如西北或东南

你的-size也没有在你的命令中做任何事情。如果你想使用-size WxH xc:somecolor,那么你可以用它来代替背景。

如果要调整大小,请不要使用-geometry。这通常用于抵消重力放置。如果要调整结果大小,请使用-resize WxH。

请参阅 http://www.imagemagick.org/Usage/compose/#compose http://www.imagemagick.org/Usage/layers/#convert

我会略微修改GeeMack的答案,所以它读起来更加对称:

convert watermark.png -write mpr:watermark +delete \
input.png \
mpr:watermark -gravity center -compose over -composite \
mpr:watermark -gravity northwest -compose over -composite \
mpr:watermark -gravity southeast -compose over -composite \
output.png

编辑:跟进OP问题。如果您需要调整水印的大小,请执行

convert watermark.png -resize 700x1300 -write mpr:watermark +delete \
input.png \
mpr:watermark -gravity center -compose over -composite \
mpr:watermark -gravity northwest -compose over -composite \
mpr:watermark -gravity southeast -compose over -composite \
output.png