ImageMagick 多次应用水印

ImageMagick apply watermark multiple times

目前,我使用 ImageMagick 在中心的 picture.jpg 之上应用 watermark.png,使用:

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

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

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

使用“-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

如有必要,在每个合成之前设置几何形状,以便从角处给标记一些填充。

在 Imagemagick 中,有一个 -gravity 设置允许您将水印放置在罗盘方向指定的不同位置。参见 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