使用方法
- 将 GIF 拖到上传区域,点击选择文件,或粘贴图片。
- 保持原格式,并且不要设置最大宽度,这样动画才会保留。
- 查看原始大小和编码后大小,GIF 动图的体积增长很快。
- 复制 img 标签或 CSS background-image 输出,也可以使用 Data URI、纯 Base64 或 Markdown 版本。
关于 GIF 格式
GIF(图形交换格式,MIME 类型为 image/gif)诞生于 1987 年。每一帧最多使用 256 色的调色板,并以 LZW 算法无损压缩。它的透明只有“有”和“无”两种:可以把调色板中的一种颜色设为透明,但不支持半透明。一个文件可以包含多帧,每帧有各自的停留时间,还能设置循环次数,因此 GIF 成了短动画的代名词。
GIF 的 Base64 以 R0lGODlh 开头(常见的 GIF89a 版本),较老的 GIF87a 则以 R0lGODdh 开头。
如何保留动画
保持原格式时,工具会原样编码文件字节,因此生成的 Data URI 无论放在 <img> 标签里还是作为 CSS 背景,都会和原文件一样播放动画。
转换为 PNG、JPEG 或 WebP,或者设置最大宽度,都会让浏览器重新绘制图片,最终只剩第一帧。想得到动图的静态预览时这很方便,但如果要保留动画,请不要开启这两个选项。
GIF Data URI 仍然适用的场景
- CSS 中的小型加载动画和动态状态图标。
- 经典的 1x1 透明像素,用作占位的
src。它只有几十个字节,Base64 后远不到 100 个字符。 - 颜色很少的简单线条图,GIF 在这类图片上相当紧凑。
大尺寸动画则不合适。一个 2 MB 的表情包动图会变成约 2.7 MB 的文本,而且无法单独缓存;改用外链的视频文件或动态 WebP 要轻得多。
.loading {
background: url("data:image/gif;base64,R0lGODlh...") no-repeat center;
}
<img src="data:image/gif;base64,R0lGODlh..." width="32" height="32" alt="加载中">
常见问题
Base64 编码后 GIF 还会动吗?
会,只要保持原格式且不缩放尺寸。Base64 保存的是完整文件,包括所有帧和循环设置。
为什么转换后 GIF 不动了?
转换为 PNG、JPEG、WebP 或缩放尺寸时,图片会从第一帧重新渲染。本工具无法生成动态 PNG 或动态 WebP,想保留动画就请使用原始 GIF。
GIF 的 Data URI 会保留透明背景吗?
如何把 Base64 字符串还原成 GIF?
把字符串粘贴到 Base64 转 GIF 中,即可预览并下载为 .gif 文件。