GIF图片的优化方法是有限并且基本固定的。我们选从前期制作GIF的过程着手来了解优化方法。
GIF图像是基于调色板的图像格式。这表示每张GIF的的颜色数目是固定的。原则上,你使用的颜色越少,你的图片体积就越小。 对于GIF动画来说,由于全部帧是共享使用同一个调色版,所以帧与帧之间最好可以使用相同的颜色。
下一个优化方向就是图像的像素个数和帧个数了。
尽量选择合理的GIF图片大小,并且特别要注意的是帧动画个数, 过多的帧会导致体积成倍增长。上面影响文件体积的每个因子都很重要。
关于多帧动画有一个特别之处。可以通过指定一个关键帧,后续的帧只提供和关键帧的差异信息。这个功能可以极大的压缩包含相似画面内容的GIF动画。在制作GIF时,保持GIF帧与帧之间的内容不要差异过大。如果你用的GIF制作工具不支持关键帧(或者你不确定它是否支持),你都可以用我写的在线GIF压缩工具来优化并启用关键帧技术。优化后的的结果是100%无损,且保持相同的透明度和帧动画内容。
有的技术会提升GIF图像质量,但是会增加GIF文件体积。对于这类技术,要综合考虑是否启用。比如“色彩拟合(dithering)”技术。拟合的原理,是通过混合排列颜色像素来拟合不在调色版中的色彩。这个技术可以消除“色带”,但是会增加文件体积。
其它还有一些优化知识:
- GIF中使用相同颜色的大片区域可以很好的压缩
- GIF中包含细节风景照,人物照不能很好的压缩
- GIF中不要启用色彩拟合(dithering), 这会增加文件体积
- GIF中不要启用隔行输出(interlace), 这会增加文件体积
- GIF中尽量不要使用渐进色,但如果你使用了。那么垂直方向(由上向下)的渐进色比水平方向(由左向右)的渐进色能更好的压缩. (注:PNG对任何方向上的渐近色都可以很好的压缩。如果你不需要动画的话,优先考虑做成PNG图片)
色彩笔的在线GIF优化工具,集合了基本所有不会影响GIFs图片质量压缩方法(无损压缩)。虽然保持无损势必让整体压缩比不会太高,但综合各项压缩手段使用都可使GIFs或多或少再减小一点体积。
上文提到的所有功能点都已实现, 包括:
- 调色版无损优化
- 关键帧压缩
- 大片相同色块区域压缩
- 垂直方向渐近色优化
- 透明及动画效果保留
分享图片
关键帧压缩,有没有一点的介绍,现在用了一个jar包生成的gif400k,到你这里压缩只有20k了,我看到应该是每一帧的变化少,应该是使用了你说的关键帧的技术。想自己尝试写一下,但是不知道怎么搞,gif的98a规格中也没有提到这个技术呀