我有一个动画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
不同答案 0 :(得分:5)
不,你不能。 GIF动画格式并不能提供这种能力。
有多种方法可以在网页上执行您想要的操作,但是您需要为静态图像创建单独的文件,并且您需要一些代码(例如JavaScript或CSS) )在所需数量的动画循环后显示静态图像。
答案 1 :(得分:0)
我非常确定您使用gif大小的问题是在您正在使用的工具中。我创建了这些样本,一个带有动画,另一个带有动画重复2次,并且两者都有相同的大小。自己检查一下:
我已经使用ScreenToGif,它是超级越野车,只能在Windows上运行,但可以打开现有的gif或图像列表进行编辑。
如果您需要Linux解决方案,请查看FFmpeg,但我自己并没有使用它。