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
这很好地覆盖了图像中间的水印。但是,我想在左上角、中间和右下角实现这种效果。我试过组合多个 -composite
s 但没有结果。我想避免调用 3 个不同的命令以避免它引入的额外开销,但我开始相信不这样做是不可能的。
如何在一个命令中实现三个水印位置,NorthWest
、Center
和 SouthEast
?
使用“-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
目前,我使用 ImageMagick 在中心的 picture.jpg
之上应用 watermark.png
,使用:
convert -size 700x1300 -composite picture.jpg watermark.png -gravity center -geometry 700x1300 output.jpg
这很好地覆盖了图像中间的水印。但是,我想在左上角、中间和右下角实现这种效果。我试过组合多个 -composite
s 但没有结果。我想避免调用 3 个不同的命令以避免它引入的额外开销,但我开始相信不这样做是不可能的。
如何在一个命令中实现三个水印位置,NorthWest
、Center
和 SouthEast
?
使用“-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