GIF 转 Base64 工具

将静态或动态 GIF 编码为 Base64。原文件逐字节编码,所有帧、帧间隔和循环设置都会原样保留。

完全在浏览器中运行,不会上传任何数据。

使用方法

  1. 将 GIF 拖到上传区域,点击选择文件,或粘贴图片。
  2. 保持原格式,并且不要设置最大宽度,这样动画才会保留。
  3. 查看原始大小和编码后大小,GIF 动图的体积增长很快。
  4. 复制 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 不支持半透明,柔和的边缘放在其他背景上可能出现锯齿,PNG 或 WebP 处理平滑边缘效果更好。
如何把 Base64 字符串还原成 GIF?
把字符串粘贴到 Base64 转 GIF 中,即可预览并下载为 .gif 文件。