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