如何在一个命令中使用 mogrify 隐藏圆圈

How to underlay circle with mogrify in one command

我写了这个脚本,它运行良好,但我想在没有额外的临时图像的情况下一步完成所有这些。

说明:我有很多损坏的图像文件,我想在每个图像下面画一个圆圈。为此,我必须创建一个临时图像 circle.png,然后使用 "image DstOver" 将其放在每个图像下方:

convert -size 200x200 xc:transparent -fill red -draw 'translate 100,100 circle 0,0 100,0' circle.png
mogrify -draw "image DstOver 0,0 0,0 'circle.png'" images/*.png

大致如下:

mogrify -fill red -draw "DstOver translate 100,100 circle 0,0 100,0" images/*.png

但无论我将 DstOver 放在哪里,这总是给我一个错误:

mogrify: non-conforming drawing primitive definition `DstOver' @ error/draw.c/DrawImage/3169.

像"DstOver"这样的组合运算符只能与“-draw”的"image"原语一起使用。只是省略它。请参阅 ImageMagick commandline 文档中的“-draw”条目。

您可以有多个“-draw”选项,一些绘图图形如 "circle ..." 和其他如 "image DstOver ..."。

我不确定你想做什么,但一般来说,mogrifymulti-image operatorsstack operators 做任何事情都会有问题。我知道的唯一例外是 -draw image 运算符,因此您需要预先创建图像然后使用它:

# Blue rectangle with transparent centre
convert -size 200x200 xc:none -bordercolor blue -border 50 start.png

# Your circle
convert -size 200x200 xc:white -fill red -draw 'translate 100,100 circle 0,0 100,0' circle.png

# Now underlay
mogrify -draw "image DstOver 0,0 0,0 'circle.png'" start.png