Imagemagick转换并撰写批量文件

时间:2017-08-09 14:02:23

标签: imagemagick batch-processing imagemagick-convert

我正在尝试像这样快速转换一批文件:

convert ./src/*.png -set filename: '%t' -gravity West -draw 'image over 0,0 424,600 "./panel.png"' ./dest/%[filename:].png

与COMPOSITE非常相似:

convert ./src/*.png ./panel.png -set filename: '%t' -gravity +0+0 -composite ./dest/%[filename:].png

除了最后一个不起作用,只是制作一个看起来很糟糕的文件。 看起来像是错误?

有人知道如何使用-composite使其更正确吗? for | awk | ls |查找shell中的每个文件是不可接受的 - 因为它比第一个例子慢。

3 个答案:

答案 0 :(得分:2)

读入文件列表,设置其输出文件名,包括IM特殊图像占位符" null:",读取叠加图像,根据需要设置几何图形,并将叠加到所有图像上使用" -layers复合"的其他图像。那" null:"将原始输入文件列表与叠加图像分开,以便ImageMagick知道要在堆栈中开始复合的位置。

尝试这样的事情......

convert ./src/*.png -set filename: '%t' null: ./panel.png -layers composite ./dest/%[filename:].png

答案 1 :(得分:1)

  

看起来像是它的错误?

不是错误。您的第二个命令是告诉ImageMagick使用匹配到图像堆栈中的所有文件,并将其合并为一个。

您可以使用mogrify实用程序尝试相同的解决方案,但如果您使用单个for循环扩展bash脚本,我相信它会更简单方式。< / p>

for f in $(ls src/*.png)
do
   dest=$(basename $f);
   convert "$f" ./panel.png -gravity West -composite "./dest/$dest"
done

答案 2 :(得分:1)

您可以使用Imagemagick mogrify命令。请参阅http://www.imagemagick.org/Usage/basics/#mogrifyhttp://www.imagemagick.org/Usage/basics/#mogrify_compose

cd to input directory
mogrify -format png -path ./dest -gravity West -draw 'image over 0,0 424,600 "./panel.png"' *.png