Imagemagick:如何减小具有大静态区域的GIF动画的大小?

时间:2019-02-27 21:54:45

标签: image imagemagick compression gif animated-gif

我从屏幕截图中创建了动画的output.gif,最终未压缩为89MB。 GIF的一半是静态的,但最好将其保持在一起,而不是包含运动部分的图像+ GIF。

使用Imagemagick和以下命令,我设法将其大小减小到18.1MB:

convert output.gif -coalesce -fuzz 3% +dither -layers Optimize compressed.gif

增加百分比会产生较小的尺寸结果,但质量会受到损害。

鉴于此GIF包含较大的静态非动画区域,您是否建议使用一个选项来实现更好的文件大小减小效果而又不影响质量?

更新我正在为此使用Ubuntu,这是我的完整工作流程:

  1. 使用Kazam截屏我需要的内容,因此无需进行任何编辑。
  2. 使用命令ffmpeg -i input.avi output.mp4转换为mp4。
  3. 为框架mkdir frames创建目录。
  4. 生成中间图像ffmpeg -i output.mp4 -r 25 'frames/frame-%04d.png'
  5. 转到框架cd frames
  6. 根据图像convert -delay 4 -loop 0 *.png output.gif生成GIF。
  7. 优化并压缩GIF以减小文件大小convert output.gif -coalesce -fuzz 3% +dither -layers Optimize compressed.gif

1 个答案:

答案 0 :(得分:3)

减小GIF大小的最佳方法是在“组合”模式下放置尽可能多的帧。这些帧仅包含与前一帧相比已更改的内容,并且可能很小,但这可能要求所有帧都使用完全相同的色图进行编码,并且相同的部分必须完全相同(没有模糊性,没有随机编码伪像) 。 Gimp可以做到这一点,但是其他专门用于GIF处理的实用程序也可以做到这一点(也许是Gifsicle)?

此外,屏幕截图的动画GIF不必为25fps,10fps就足够了。