上传文件
  1. base64hub
  2. 图片工具
  3. GIF 转 Base64

GIF 转 Base64

拖入 GIF,即可复制为 Base64、data:image/gif URI 或 <img> 标签。只要不动缩放和转换选项,动画就会完整保留。

免费 无需注册,不限次数 本地 不上传任何内容 更新于 2026年10月27日
将图片拖到这里、粘贴或选择图片
输入 –输出 –大小 –

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何把 GIF 转为 Base64

  1. 把 .gif 文件拖到框中,或用文件选择器选择。
  2. 如果 GIF 是动图,请不要改动 最大宽度、转换为 和 移除元数据(EXIF) 选项。
  3. 选择 输出为:Data URI、CSS background-image、HTML <img>、Markdown 或纯 Base64。
  4. 按 复制输出。指示条会显示文本比文件大了多少。

预览会播放动画,复制之前可以确认文件是否正确。

动画与重新编码选项

输出上方的选项会在 canvas 上重绘图片。canvas 只能容纳一张静态图片,浏览器也无法从中生成 GIF 文件,所以重新编码后的 GIF 会变成 仅包含第一帧 的 PNG(如果你选了 JPEG 或 WebP,则是相应格式)。想要动画的静态缩略图时,这很有用;要保留动画,就不要动这些选项。

如果 GIF 动图太大,需要在使用本工具之前解决:在 GIF 编辑器中减少帧数、缩小尺寸或减少调色板颜色,或者换成一段短的循环 MP4 或 WebM,它通常比同一片段的 GIF 小得多。

GIF 的 Base64 长什么样

字节Base64含义
GIF89aR0lGODlhGIF89a:支持动画和透明
GIF87aR0lGODdhGIF87a:1987 年的原始格式

下面这个 1×1 透明 GIF 有 42 字节,对应 56 个 Base64 字符:

<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="" width="1" height="1">

它过去用来填充表格布局,如今仍会作为懒加载图片的占位 src 出现,因为一张有效的图片可以避免显示破图图标,也省去一次额外请求。

GIF 动图的 Base64 大小

以现代标准衡量,GIF 的压缩效率很低,而且动图要存储每一帧。一个两秒的表情 GIF 很容易就有几 MB,转成 Base64 文本后有好几 MB。只内联小的 GIF,例如加载动画或小图标。更大的文件用普通文件更好:它可以被缓存、懒加载,而 data URI 在每个包含它的页面中都要重新下载。

电子邮件不适合使用 Base64 GIF。Gmail 和其他网页邮箱不显示 data URI 图片,所以新闻邮件中的 GIF 动图都是以托管文件的形式链接的。参见 电子邮件中的 Base64。

在 Node.js 中编码 GIF

import { readFileSync } from "node:fs";

const gif = readFileSync("spinner.gif");
const uri = `data:image/gif;base64,${gif.toString("base64")}`;

Node.js 中的 Base64 介绍了流和 URL 安全输出。要把 Base64 字符串还原成可播放的文件,请使用 Base64 转 GIF。

常见问题

GIF 动图转成 Base64 后还会动吗?

会。Base64 逐字节复制文件,所有帧和时间信息都会保留。只有缩放、转换格式和移除元数据选项会破坏动画,因为它们会在 canvas 上重绘第一帧,并保存为静态图片。

最小的透明 GIF data URI 是什么?

常用的是 data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7,一个 42 字节、1×1 的透明 GIF。它至今仍被用作占位图或空 src 的替代。

为什么 GIF 的 Base64 以 R0lGOD 开头?

那是 GIF8,即 GIF 签名的开头。R0lGODlh 表示 GIF89a,支持动画和透明的版本;R0lGODdh 表示更早的 GIF87a。