我编写了这个脚本并且它工作正常,但是我希望在没有额外临时图像的情况下一步一步地完成所有操作。
解释:我有很多破损的图像文件,我想在每个图像下面画一个圆圈。为此,我必须创建一个临时图像circle.png,然后使用“图像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.
答案 0 :(得分:1)
像“DstOver”这样的合成运算符仅用于“-draw”的“image”原语。只是省略它。请参阅ImageMagick commandline文档中的“-draw”条目。
你可以有多个“-draw”选项,一些绘图数字,如“circle ...”和其他诸如“image DstOver ...”。
答案 1 :(得分:1)
我不确定您要做什么,但一般情况下,mogrify
无法使用multi-image operators
或stack 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