我正在尝试像这样快速转换一批文件:
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中的每个文件是不可接受的 - 因为它比第一个例子慢。
答案 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/#mogrify和http://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