ImageMagick - 最大帧数?

时间:2014-06-09 14:45:42

标签: imagemagick gif

我正在使用ImageMagick将png文件的序列转换为动画gif。基本上命令是

convert -delay 5 img/gif_part_*.png animation.gif

文件从gif_part_1.png转到gif_part_27.png,但gif从gif_part_10.png(可能是9)开始,然后转到最后一个。你可以在这里看到它。 Stack不允许我上传gif文件,因此我稍后会对其进行修改。

那么我可以对gif中的文件数量进行限制(现在看起来最大值大约为18)?我正在研究龟图形,我想通过递归函数创建图形时显示过程。 png个文件的数量可能是100个或更多。

我也尝试过使用ffmpeg,但无法使其正常工作。

更新

我尝试用两个较小的gif制作一个gif,然后完成了这项工作。但我认为这是一种可怕的方式 - 这将是一项非常重要的工作,将它们放在一起。

我认为问题可能在于命名文件。我在某处读过,可能需要添加零,因为gif_part_10.png可能会在gif_part_1.png之前。

1 个答案:

答案 0 :(得分:2)

基本上,解决方案是我更新的问题。但为了更好的可读性,我将添加一个答案。问题在于命名单个png文件。当ImageMagick-command convert创建gif文件时,它需要以某种方式对png文件进行排序。 错误命名将是

img1.png
img2.png
.
img10.png
.
.
img90.png

因为在这种情况下convert会将img10.png放在img1.png之前,这肯定会破坏输出。 正确方式是:

img01.png
img02.png
img03.png
img04.png
img05.png
img06.png
img07.png
img08.png
img09.png
img10.png
.
.
.
img90.png

现在convert将按正确的顺序对文件进行排序

<小时/> 由于我自己创建了png文件,因此我可以轻松地更正脚本,这要归功于this整洁的方法。我假设您知道,要将多少张图片转换为gif,请将其放入变量`num_images&#39;然后你可以这样做:

path  = 'img_'+ str(index + 1).zfill( len( str( num_images) ) )
path += '.png'

将添加必要数量的前导零。例如。您要转换236张图片(在我们的案例中为num_images = 236)。另一个巧妙的技巧是len( str( num_images ) )。首先,它从236创建一个字符串 - &gt; '236'然后找到len( '236' ) = 3

的长度

这是最终文件的外观zfill

img_001.png
img_002.png
.
.
.
img_010.png
img_011.png
.
.
img_100.png
.
.
.
img_236.png
相关问题