从 PNG 文件创建 GIF 动画

从 PNG 文件创建 GIF 动画

gif有没有可以从一组文件创建动画的工具png

我尝试了convert来自的命令图像魔术师套件,但这并不总是成功。另外,我对此有几个问题:

  1. 我无法说出进展如何。
  2. 无论我如何尝试,该-delay标志都不会改变 gif 动画的帧速率。
  3. convert根据文件名的字母顺序确定帧顺序。这意味着它将被放置在我可以通过添加 0 来解决此问题name500.png之后name50.png,而不是之后,但这很烦人。name450.png

答案1

ImageMagickconvert是一个方便的命令行工具来做到这一点。 cd到包含您的文件夹PNG-files 并运行此命令:

convert -delay 10 -loop 0 *.png animation.gif

来源:http://ubuntuforums.org/showthread.php?t=1132058

答案2

较新版本的 ffmpeg 没有 -sameq (请参阅常见问题解答)但有 GIF 支持。

ffmpeg -i %03d.png output.gif

其中 %03d 是 3 位数的帧 ID。

您还可以尝试使用ffmpeg图像序列创建电影,然后将电影转换为 GIF 动画(再次使用ffmpeg)。

# cf. http://pages.uoregon.edu/noeckel/MakeMovie.html

# first convert an image sequence to a movie
ffmpeg -sameq -i %03d.jpg output.mp4

# ... and then convert the movie to a GIF animation
ffmpeg -i output.mp4 -pix_fmt rgb24 -s qcif -loop_output 0 output.gif

答案3

convert的选项--delay仅适用于命令行上的下一个图像。所以convert -delay 10 *只会将第一帧的延迟设置为0.1秒。需要重复该选项:

convert $(for a in *; do printf -- "-delay 10 %s " $a; done; ) result.gif

为了满足您的排序需求,convert 不会对帧进行排序,而 shell globing*会进行排序。如果您知道帧的编号是从 0 到 700,您可以自己计算数字:

convert $(for ((a=0; a<700; a++)); do printf -- "-delay 10 name%s.png " $a; done;) result.gif

答案4

更新:

用于convertpng 转 gif,然后使用动画棒对于动画。它不是一个解决所有问题的应用程序,但肯定是可编写脚本的。


GIMP创建 gif 动画并提供定时/延迟和重复等控制

相关内容