首页 > 解决方案 > Imagemagick:如何减小具有大静态区域的动画 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. 从图像生成 GIF convert -delay 4 -loop 0 *.png output.gif
  7. 优化和压缩 GIF 以减小文件大小convert output.gif -coalesce -fuzz 3% +dither -layers Optimize compressed.gif

标签: imageimagemagickcompressiongifanimated-gif

解决方案


减小 GIF 大小的最佳方法是将尽可能多的帧置于“组合”模式。这些帧仅包含与前一帧相比发生变化的内容,并且可能非常小,但这可能需要使用完全相同的颜色图对所有帧进行编码,并且相同的部分是真正相同的(没有模糊性,没有随机编码伪影) . Gimp 可以做到这一点,但其他专门从事 GIF 处理的实用程序也可以做到这一点(也许是 Gifsicle)?

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


推荐阅读