如何在一个命令

时间:2016-07-16 21:49:18

标签: imagemagick mogrify

我编写了这个脚本并且它工作正常,但是我希望在没有额外临时图像的情况下一步一步地完成所有操作。

解释:我有很多破损的图像文件,我想在每个图像下面画一个圆圈。为此,我必须创建一个临时图像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.

2 个答案:

答案 0 :(得分:1)

像“DstOver”这样的合成运算符仅用于“-draw”的“image”原语。只是省略它。请参阅ImageMagick commandline文档中的“-draw”条目。

你可以有多个“-draw”选项,一些绘图数字,如“circle ...”和其他诸如“image DstOver ...”。

答案 1 :(得分:1)

我不确定您要做什么,但一般情况下,mogrify无法使用multi-image operatorsstack operators执行任何操作。我所知道的唯一例外是-draw image运算符,因此您需要预先创建图像然后使用它:

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

enter image description here

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

enter image description here

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

enter image description here