定义ImageMagick转换的文件顺序

时间:2012-09-09 13:09:18

标签: imagemagick imagemagick-convert

我有一堆名为PNG的{​​{1}}个文件我希望转换为TIF动画。 foo<bar>.png是一个数字,从0到25不等,数量为5。 ImageMagick将<bar>放在动画的最后,而它应该是第二个。有没有办法,除了将文件重命名为foo5.png以将其放在正确的位置?

6 个答案:

答案 0 :(得分:14)

如果你有更多的输入图像,而不是方便输入(例如,foo0..foo100.png),你可以这样做(在Linux,Unix和Mac OS X上):

convert                                                  \
  -delay 10                                              \
   $(for i in $(seq 0 5 100); do echo foo${i}.png; done) \
  -loop 0                                                \
   animated.gif

答案 1 :(得分:5)

您只需提供PNG文件的顺序,因为它们应出现在动画中。使用:

foo0.png foo5.png foo10.png foo15.png foo20.png foo25.png

而不是

foo*.png

毕竟,它只有6个不同的文件名,应该很容易输入:

convert                                                      \
  -delay 10                                                  \
   foo0.png foo5.png foo10.png foo15.png foo20.png foo25.png \
  -loop 0                                                    \
   animated.gif

答案 2 :(得分:2)

简单易用,列出您的图像并对其进行排序:

convert -delay 10 -loop 0 $(ls -1 *.png | sort -V) animated.gif

答案 3 :(得分:1)

您可以使用&#34;查找&#34;用&#34;排序&#34;:

convert -delay 10 $(find . -name "*.png" -print0 | sort -zV | xargs -r0 echo) -loop 0 animated.gif

答案 4 :(得分:0)

或者如果你知道一点python,那么你可以很容易地利用python shell的帮助。

在终端中输入python来点击python shell。并应用以下魔法咒语 -

# Suppose your files are like 1.jpeg, 2.jpeg etc. upto 100.jpeg
files = []
for i in range(1, 101):
    files.append('{}.jpeg'.format(i))
command = 'convert -delay 10 {} -loop 0 animated.gif'.format(' '.join(files))
from subprocess import call
call(command, shell=True)

你的工作应该完成!

答案 5 :(得分:0)

比ls更容易,排序是使用ls的内置-v选项:

convert -delay 10 -loop 0 `ls -v *.png` animated.gif

执行`...`而不是解释为字符串。