在gif中进行一些动画循环后,你能显示静态图像吗?

时间:2015-07-21 14:55:24

标签: python animation imagemagick animated-gif

我有一个动画gif,我想循环n次(animation.gif)。在循环之后,我想显示一个静态图像(static.gif)。动画将显示在网络上,因此文件大小必须尽可能小。

我尝试通过添加零延迟的静态图像来实现Imagemagick ...

convert -loop 3 animated.gif -delay 0 static.gif newanim.gif

尽管最后显示的是静态图像,但问题是每次迭代后都会显示static.gif一瞬间。

我尝试的另一件事是将动画添加3次,最后添加静态图像。这很好用,但是文件变得太大,特别是如果动画很长,并且它被循环多次。例如,6.1mb的动画变为~18mb。

convert -loop 1 animated.gif animated.gif animated.gif static.gif newanim.gif

我在Linux环境中使用Python来实现这一点,所以如果有程序化的方法来实现这一点,而不是Imagemagick也可以。

编辑:我没有提到约束:它需要在没有任何客户端编程(Javascript,CSS等)的情况下工作。它需要是一个纯粹的GIF解决方案。此约束使其与How to stop an animated gif from looping

不同

2 个答案:

答案 0 :(得分:5)

不,你不能。 GIF动画格式并不能提供这种能力。

有多种方法可以在网页上执行您想要的操作,但是您需要为静态图像创建单独的文件,并且您需要一些代码(例如JavaScript或CSS) )在所需数量的动画循环后显示静态图像。

答案 1 :(得分:0)

我非常确定您使用gif大小的问题是在您正在使用的工具中。我创建了这些样本,一个带有动画,另一个带有动画重复2次,并且两者都有相同的大小。自己检查一下:

single loop two loops

我已经使用ScreenToGif,它是超级越野车,只能在Windows上运行,但可以打开现有的gif或图像列表进行编辑。

如果您需要Linux解决方案,请查看FFmpeg,但我自己并没有使用它。