2017-08-09 51 views
0

我试着做这样的快速转换批处理文件的:ImageMagick的转换和撰写批处理文件

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

这是非常相同的形组合:

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

除了最后一个未创建批处理只是制作一个第一个废话文件。 看起来像是bug?

任何人都知道如何通过-composite使它更正确? for | awk | ls |找不到每个文件在shell中是不可接受的 - 因为它们比第一个示例慢

回答

2

读入文件列表,设定自己的输出文件名,包括IM特殊图像占位符“空”,在您的叠加图像阅读,如果需要的几何形状,和复合材料,其覆盖设置到所有其他带“-layers composite”的图像。该“null:”将原始输入文件列表从叠加图像中分离出来,因此ImageMagick知道堆栈中要开始执行组合的位置。

尝试这样的事情...

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

是的,就像 'convert ./src/*.png -set filename:'%t'null:./panel.png -geometry + 0 + 0 -layers composite ./dest /%[filename:]。png' 非常感谢 – nvvetal

0

看起来像是bug?

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

您可以尝试与mogrify效用相同的解决方案,但我相信,如果你有一个for环扩大bash脚本这将是方式简单。

​​
+0

它需要更多的时间:( – nvvetal

+1

使用[牛羚并行](https://www.gnu.org/software/parallel/)如果你需要节省时间。 – emcconville