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