文件格式
什么是 GIF?256 色、动画与 LZW 压缩
GIF 诞生于 1987 年,只支持 256 色,却凭借动画活到了今天。本文介绍它的工作原理、为什么文件会很大,以及什么时候应该选择其他格式。
作者: Hemen Dönüştür Editör Ekibi发布日期: 阅读约 6 分钟

GIF(Graphics Interchange Format,图形交换格式)是网页上最古老的图片格式之一。照片领域它早已输给了 JPG,图形领域输给了 PNG,但说到短小的循环动画,人们首先想到的仍然是它。本文将介绍 GIF 的起源、它的压缩和动画原理、256 色限制的真正含义,以及可以考虑的替代格式。
简要历史
GIF 由当时的大型在线服务商之一 CompuServe 开发。根据英国国家档案馆 PRONOM 登记库的记录,第一个版本 GIF87a 于 1987 年 6 月 15 日发布。下一个版本 GIF89a 的名称来自 1989 年;PRONOM 列出、由 W3C 托管的规范文本日期为 1990 年 7 月 31 日。89a 加入了图形控制扩展(Graphic Control Extension),用于定义帧延迟、透明度和处置方式,同时还加入了注释、纯文本和应用程序扩展。今天的 GIF 动图就是建立在这些扩展之上的。
GIF 历史上最著名的一章是专利之争。GIF 使用 LZW 压缩,这一算法是 Unisys 的专利。根据美国国会图书馆的格式说明,1994 年 Unisys 开始对 LZW 收取许可费,GIF 因此声名狼藉。这直接促成了作为无专利替代品的 PNG 的诞生。据同一来源,Unisys 的美国专利于 2003 年 6 月到期,欧洲和日本专利于 2004 年 6 月到期,因此如今使用 GIF 无需任何许可。
GIF 的工作原理
调色板与 256 色限制
GIF 并不直接保存每个像素的颜色,而是保存指向颜色表(调色板)的索引。根据规范,一个颜色表最多可容纳 256 个条目,每个条目是一个 24 位 RGB 颜色。全局颜色表可以作用于整个文件,每一帧也可以有自己的局部颜色表。颜色较少的标志和插画很容易满足这一限制,而有成千上万种色调的照片在减少到 256 色时会出现色带或抖动图案。
LZW 压缩
像素索引使用 LZW 进行无损压缩,它采用可变长度编码;规范允许编码最长增长到 12 位。LZW 的原理是把重复出现的像素序列加入字典,因此在大面积纯色区域效果很好,在噪点多的照片上效果很差。
透明度
在 GIF89a 中,图形控制扩展可以把调色板中的一种颜色标记为“透明”。这是开或关的(二值)透明:一个像素要么完全可见,要么完全透明。这就是为什么半透明阴影和柔和边缘在 GIF 中会显得锯齿状,也是为什么放在彩色背景上时边缘出现浅色“光晕”如此常见。
动画
GIF 动图是单个文件中的一系列帧。每一帧的图形控制扩展设定它在屏幕上停留多长时间(以百分之一秒为单位),以及在显示下一帧之前如何清除它所占的区域。循环信息保存在应用程序扩展中。可选的隔行扫描能让图片在加载时逐渐显示出来。
帧处置方式
规范为一帧显示之后如何处理其区域定义了四个值:未指定处置方式、保留该帧、把区域恢复为背景色,以及把区域恢复为之前的内容。在制作精良的动画中,只有发生变化的区域会被写成新帧,其余部分沿用上一帧,正是这一点让文件保持较小。因此,编辑 GIF 的工具必须基于按这些规则合成的完整图像进行处理,而不是逐个处理原始帧。
GIF 的使用有多广泛?
W3Techs 2026 年 10 月的数据显示,在其监测的网站中有 13.2% 使用 GIF。根据 HTTP Archive Web Almanac 2024,移动端页面上 16.8% 的图片是 GIF;报告称其中 32% 是动图。报告还指出,所有图片请求中约有 6% 是 1x1 像素的图片,很可能是跟踪信标和占位 GIF,所以 GIF 的高占比并不完全来自动画。
在压缩效率上,GIF 远远落后。同一报告给出的 GIF 中位数为每像素 6.7 比特,PNG 为 3.8,JPEG 为 2.0,WebP 为 1.3。对于 GIF 动图,中位数升至 32.6 比特,而非动画 GIF 为 3.5 比特。
什么可以取代 GIF?
MDN 的图片格式指南认为 GIF 适合基本的图片和动画,但建议无损和索引色静态图片使用 PNG,动画序列使用 WebP、AVIF 或 APNG。对于较长的动画或由真实影像制作的动画,视频的效率要高得多:在 web.dev 的示例中,一个 3.7 MB 的 GIF 转为 MP4 后只有 551 KB,转为 WebM 后只有 341 KB。
| 需求 | 建议 |
|---|---|
| 静态标志、图标、纯色图形 | PNG 或 SVG |
| 颜色较少的短动画(如加载动画) | GIF、APNG 或动态 WebP |
| 由视频影像或录屏制作的动画 | 静音、循环播放的 MP4 或 WebM 视频 |
| 必须在任何地方都能播放的动画(邮件、即时通讯) | GIF;仍是兼容性最广的格式 |
电子邮件客户端和一些即时通讯应用不播放视频,也不显示动态 WebP。这种普遍的兼容性,才是 GIF 能存活三十多年的真正原因。
常见问题
GIF 太大了
帧数、像素尺寸和画面运动量都会直接增加文件大小。缩小尺寸、裁剪画面或只截取一小段是最有效的办法;对于较长的片段,改用视频是更好的选择。
颜色出现色带或斑点
这是 256 色限制的必然结果。天空或肤色这类平滑渐变受影响最大。对于类照片内容,请用 JPG、WebP 或视频代替 GIF。
边缘有一圈白色光晕
由于透明 GIF 不能半透明,在浅色背景上制作的图片放到深色背景上时,会露出边缘的中间色调。对于边缘柔和的透明图片,请使用 PNG 或 WebP。
转换后动画停止了
PNG 和 JPG 不能承载动画,所以把 GIF 动图转换为这两种格式时只会保留一帧。
GIF 处理技巧
- 要截取一张静态图片,请使用 GIF 转 PNG。GIF 的第一帧会连同透明度一起保存为无损 PNG。
- 要缩小 GIF 动图的尺寸,请使用图片尺寸调整工具。调整大小时,GIF 动图会保留每一帧及其显示时间(最多 600 帧)。
- 要裁剪动画,图片裁剪工具会对每一帧应用相同的裁剪,并保留帧的时间设置。
- 要减小文件大小,图片压缩工具会把 GIF 动图保留为包含所有帧的 GIF,而静态 GIF 默认转换为 WebP 以缩小体积。
- 要把其他图片转为 GIF,请在图片格式转换工具中选择 GIF 作为目标格式。输出为最多 256 色的单帧图片,半透明区域会被简化为开或关的透明。
- 以上操作都在你的浏览器中运行,文件不会离开你的设备。
常见问题
GIF 是有损的吗?
LZW 压缩是无损的。但把全彩图片转换为 GIF 需要减少到 256 色,损失就发生在这个减色步骤中。
GIF 和 GIF 动图有区别吗?
格式是相同的。只有一帧的 GIF 是静态的,有多帧的 GIF 就是动图。帧延迟和循环信息保存在文件内部的扩展中。
为什么现在还在用 GIF?
因为它几乎在任何地方都能直接播放,无需任何设置:浏览器、电子邮件客户端、聊天应用和旧软件都可以。更高效的替代格式目前还无法在所有环境中提供这样的兼容性。
把 GIF 转为 MP4 有意义吗?
如果是在你的网站上展示,通常有意义。在 web.dev 的示例中,视频版本的大小大约只有 GIF 的七分之一到十分之一。使用 autoplay、loop、muted 和 playsinline 属性播放的视频,在页面上的表现与 GIF 完全一样。
GIF 最多能有多少种颜色?
每个颜色表最多 256 色。从技术上讲,由于每一帧都可以带有自己的局部颜色表,多帧 GIF 总共可以显示更多的颜色,但单帧之内的上限是 256 色。
参考资料
- CompuServe:Graphics Interchange Format Version 89a(W3C 副本)
- 英国国家档案馆 PRONOM:Graphics Interchange Format 87a
- 英国国家档案馆 PRONOM:Graphics Interchange Format 89a
- 美国国会图书馆:GIF 89a 格式说明
- MDN:图像文件类型与格式指南
- web.dev:Replace animated GIFs with video for faster page loads
- W3Techs:网站图片格式使用统计
- HTTP Archive Web Almanac 2024:Media


