我根据屏幕截图创建了一个动画 output.gif
,最终未压缩为 89MB。 GIF 的一半是静态的,但最好将它们放在一起,而不是图像 + 包含移动部分的 GIF。
使用 Imagemagick 和以下命令,我设法将其大小减小到 18.1MB:
convert output.gif -coalesce -fuzz 3% +dither -layers Optimize compressed.gif
增加百分比会产生更小的尺寸结果,但质量会受到影响。
鉴于此 GIF 包含较大的静态非动画区域,您是否建议使用一个选项来更好地减小文件大小而不影响质量?
更新 我为此使用 Ubuntu,这是我的完整工作流程:
- 使用Kazam截屏正是我所需要的,因此无需进行任何类型的编辑。
- 使用命令
ffmpeg -i input.avi output.mp4
转换成mp4。 - 为框架创建目录
mkdir frames
。 - 生成中间图像
ffmpeg -i output.mp4 -r 25 'frames/frame-%04d.png'
。 - 转到框架
cd 框架
。 - 从图像
convert -delay 4 -loop 0 *.png output.gif
生成 GIF。 - 优化和压缩 GIF 以减小文件大小
convert output.gif -coalesce -fuzz 3% +dither -layers Optimize compressed.gif
最佳答案
减小 GIF 大小的最佳方法是将尽可能多的帧置于“组合”模式。这些帧仅包含与前一帧相比发生变化的内容,这可能非常小,但这可能需要所有帧都使用完全相同的颜色图进行编码,并且相同的部分是真正相同的(没有模糊性,没有随机编码伪影) . Gimp 可以做到这一点,但其他专门用于 GIF 处理的实用程序也可以做到这一点(也许是 Gifsicle)?
此外,屏幕截图的 GIF 动画不必是 25fps,10fps 就足够了。
关于Imagemagick:如何减小具有大静态区域的动画 GIF 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54915097/