你能在gif动画循环后显示静态图像吗?

2024-10-03 13:20:14 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我尝试用Imagemagick来实现它,添加了一个零延迟的静态图像。。。在

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

虽然最后显示的是静态图像,但问题是每次迭代之后静态.gif显示一瞬间。在

另一件事我尝试添加3次动画和静态图像在最后。这是完美的工作,但文件变得太大,尤其是如果动画很长,如果它被循环多次。例如,一个6.1mb的动画变成了~18mb。在

^{pr2}$

我在linux环境中使用Python来实现这一点,所以如果有编程方式而不是Imagemagick来实现这一点,那也可以。在

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


Tags: 文件图像网络loopconvert编程静态static
2条回答

不,你不能。GIF动画格式不提供这种功能。在

有很多方法可以在网页上做你想做的事情,但是你需要有一个单独的静态图像文件,你需要一些代码(比如JavaScript,或者CSS)来显示所需数量的动画循环后的静态图像。在

我很确定你的问题是你使用的工具产生的gif大小。我已经创建了这些样本,一个是动画,另一个是重复两次的动画,两者的大小相同。你自己检查一下:

single looptwo loops

我用过ScreenToGif,它是超级buggy,只在Windows上工作,但它可以打开现有的gif或图像列表进行编辑。在

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

相关问题 更多 >