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

Pau*_*aul 3 python animation imagemagick animated-gif

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

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

convert -loop 3 animated.gif -delay 0 static.gif newanim.gif
Run Code Online (Sandbox Code Playgroud)

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

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

convert -loop 1 animated.gif animated.gif animated.gif static.gif newanim.gif
Run Code Online (Sandbox Code Playgroud)

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

编辑:我没有提到约束:它需要在没有任何客户端编程(Javascript,CSS等)的情况下工作.它需要是一个纯粹的GIF解决方案.这个约束使它与如何从循环中停止动画gif有所不同

PM *_*ing 5

不,你不能.GIF动画格式不提供该功能.

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

  • 如果你不能使用客户端(或服务器端)的东西,而你_have_将它作为一个独立的GIF来做,你只有选择就是你已经尝试过的 - 包含多个副本的巨大动画动画的一部分,静态图像贴在最后.OTOH,有其他动画选项,如SVG,但它们通常使用多个文件.我想_may_可以将这些文件嵌入到SVG文件中,我从未尝试过...... (4认同)