GIF压缩
把体积过大的 GIF 动图压小,满足微信表情、论坛附件、邮件和网页加载的大小限制
三个维度一起压
画面尺寸、帧数、颜色质量三档独立可调,尺寸减半通常就能把体积降到四分之一左右
抽帧不改变播放速度
丢掉的帧其显示时长会补给相邻帧,动画总时长和节奏保持原样,不会变成快进
本地处理免上传
GIF 全程在浏览器本地解码和重编码,文件不会离开设备,也没有大小和次数限制
使用场景
- 微信自定义表情限制单个 GIF 不超过 1MB、尺寸 240×240,超标的动图压完就能添加
- 论坛、贴吧、知乎等平台的附件和图片有大小上限,几十兆的录屏 GIF 传不上去
- 文档、README、产品说明里的操作演示动图,压小后页面加载更快、不拖慢阅读
- 邮件附件普遍限制 10–25MB,长动图需要先瘦身才能作为附件发出去
GIF 为什么这么大,以及怎么压
GIF 是 1987 年的格式,每帧最多只能用 256 种颜色,且没有现代视频那样的帧间压缩,所以同样的画面用 GIF 存往往比 MP4 大十几倍。能压的地方只有三处:画面尺寸、帧数、每帧的颜色数量。
本工具用 gifuct-js 逐帧解码(并按 GIF 的 disposal 规则把每帧还原成完整画面),再用 gif.js 重新量化调色板并编码输出。三档参数中尺寸的收益最大——宽高各减半,像素数就只剩四分之一;抽帧其次;颜色质量的降幅相对有限,但在不想牺牲尺寸时很有用。全部计算在浏览器本地完成。
相关 GIF 工具
如果体积实在压不到要求,可以考虑换格式:把动图转成视频体积能小一个数量级,用GIF 转视频即可。反过来,想从视频里截一段做成动图用视频转GIF,想把多张照片合成动图用图片转GIF,生成之后再回到本页压缩。
常见问题
GIF 一般能压缩到多小?
取决于原图和参数。尺寸是效果最明显的一档:宽高各缩到 50%,像素数就只剩四分之一,体积通常降到原来的 25%–35%。再叠加抽掉一半帧,多数 GIF 能压到原体积的 15% 左右。如果只调颜色质量而不动尺寸和帧数,降幅一般在 10%–30%。
抽帧会让动画变快吗?
不会。抽掉一帧时,它的显示时长会累加到保留下来的前一帧上,所以动画总时长和播放速度都保持不变,只是画面的流畅度降低了。对于本身帧率就很低的 GIF,建议保留全部帧。
怎么把 GIF 压到微信表情要求的大小?
微信自定义表情要求单个文件不超过 1MB、尺寸不超过 240×240。先把画面尺寸调到能让宽高落在 240 以内的档位,再抽掉一半帧,颜色质量选「均衡」,压完看结果区的体积;还超就把颜色质量换成「最省体积」或继续降尺寸。
为什么压缩后体积反而变大了?
少数 GIF 原本就用了非常激进的优化(比如每帧只存极小的差异区域),而重新编码会把每帧都写成完整画面,抵消掉原有的优化。遇到这种情况把画面尺寸调到 50% 或更低,或者抽掉一半帧,就能重新压下去。
GIF 文件会被上传到服务器吗?
不会。解码、缩放和重新编码全部在您的浏览器本地完成,GIF 文件不会离开您的设备,也不会上传到任何服务器。
压缩很大的 GIF 会卡吗?
GIF 压缩需要逐帧解码再逐帧重新编码,帧数越多耗时越长,几百帧的长动图在手机上可能需要等待较久。如果只是想大幅减小体积,把画面尺寸降到 50% 会同时显著缩短处理时间。