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

Imagemagick: How to reduce size for annimated GIF with big static areas?

我根据屏幕截图创建了一个动画 output.gif,最终未压缩的大小为 89MB。 GIF 的一半是静态的,但最好将它们放在一起,而不是图像 + 包含移动部分的 GIF。

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

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

增加百分比会产生更小的尺寸结果,但质量会受到影响。

考虑到此 GIF 包含较大的静态非动画区域,您是否建议使用一个选项来更好地减小文件大小而不影响质量?

UPDATE 我为此使用 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

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

另外,截屏的动画GIF不需要25fps,10fps就足够了。