【问题标题】:ImageMagick - maximal number of frames?imagemagick - 最大数量的框架?
【发布时间】:2014-07-30 03:21:03
【问题描述】:

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

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

文件从gif_part_1.pnggif_part_27.png,但gif 从gif_part_10.png(可能是9)开始,一直到最后。你可以在这里看到它。 Stack 不允许我上传 gif 文件,所以我稍后会编辑它。

那么对于我可以制作成gif 的文件数量是否有限制(现在看起来最大值约为 18)?我正在研究海龟图形,我想展示递归函数创建图形时的过程。 png 文件的数量可能有一百个或更多。

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

更新

我尝试用两个较小的gifs 制作一个gif,它完成了这项工作。但我认为这是一种可怕的方式 - 将所有内容放在一起将是一项艰巨的工作。

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

【问题讨论】:

  • 你是对的,当我有这样一个项目时,我将我的帧编号从 frame_000.pngframe_108.png 并且从那里完美运行。
  • @NiettheDarkAbsol 是的,它现在正在工作!太好了,但现在我不确定是否应该删除它,或者编辑 Q 或回答它..:)
  • 您在发布后大约半小时后回来编辑。在这种情况下,我认为如果您回答自己的问题就可以了 :)

标签: imagemagick gif


【解决方案1】:

基本上解决方案在我更新的问题中。但是为了更好的可读性,我会添加一个答案。问题在于命名单个 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”,然后您可以执行以下操作:
path  = 'img_'+ str(index + 1).zfill( len( str( num_images) ) )
path += '.png'

这将添加必要数量的前导零。例如。你有236 图像要转换(在我们的例子中是num_images = 236)。另一个巧妙的技巧是len( str( num_images ) )。首先它从236 创建一个字符串 --> '236' 然后找到len( '236' ) = 3 的长度

这就是最终文件的样子zfill

img_001.png
img_002.png
.
.
.
img_010.png
img_011.png
.
.
img_100.png
.
.
.
img_236.png

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 2010-09-18
    相关资源
    最近更新 更多