ZeroTool Workbench
图片转 Base64 工具
图片转 Base64、Data URI、CSS、HTML、Markdown,也能把 Base64 还原成图片。按文件内容识别真实格式,SVG 可选 URL 编码。纯浏览器处理,不上传。
使用方法
- 把图片拖进虚线框,或按 Ctrl+V(Mac 为 ⌘V)粘贴截图,也可以点击虚线框选择文件。
- 看文件名下方的一行:识别出的格式、像素尺寸、Base64 的字符数和增加的比例。
- 选择输出:Data URI、Base64、CSS(
background-image)、HTML<img>或 Markdown。SVG 文件还可以选 Base64 或 URL 编码。 - 点 复制。输出超过 200 万个字符时不在文本框里显示,用 下载 .txt 保存。
- 反方向操作:切到 Base64 → 图片,粘贴 Base64 或 Data URI,点 解码(或按 Ctrl+Enter)。
示例:带中文标题的 SVG 图标
star.svg 是一个 258 字节的收藏图标,带 XML 声明,<title> 里是中文「收藏」。工具给出两种 Data URI:Base64 370 个字符,URL 编码 357 个字符,默认选 URL 编码,CSS 输出如下:
background-image: url("data:image/svg+xml,%3C?xml version=%221.0%22 encoding=%22UTF-8%22?%3E%0A%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2220%22 height=%2220%22 viewBox=%220 0 20 20%22%3E%0A %3Ctitle%3E%E6%94%B6%E8%97%8F%3C/title%3E%0A %3Cpath fill=%22%23f59e0b%22 d=%22M10 1.5l2.6 5.3 5.9.9-4.3 4.1 1 5.8L10 14.9l-5.2 2.7 1-5.8L1.5 7.7l5.9-.9z%22/%3E%0A%3C/svg%3E%0A");
几处转义各有原因:「收藏」按 UTF-8 字节写成 %E6%94%B6%E8%97%8F;颜色里的 # 写成 %23,因为 URL 解析器把 # 当作片段开头,后面的内容会被丢掉;换行写成 %0A,因为解析器会删掉原样的换行和制表符;" 写成 %22,这样整串可以放进 url("…") 或 HTML 属性。空格和单引号保持原样。转义按字节进行,文件本身的编码不变。
示例:给 OCR 接口传图片
百度通用文字识别的 image 参数要求「base64 编码后进行 urlencode」,请求体是 application/x-www-form-urlencoded,编码后不超过 8M,只支持 jpg/jpeg/png/bmp。文档里的 Python 示例用 base64.b64encode(f.read()),不带 data: 前缀。所以这里要复制 Base64 而不是 Data URI,再对它做 urlencode:/ 变成 %2F,+ 变成 %2B,= 变成 %3D。+ 必须转义:按表单格式解析时,+ 会被读成空格。
发票截图 invoice.jpg(267 字节)在工具里显示为 JPEG · 2 × 2 像素 · 267 字节 → Base64 356 个字符(+33.3%),Base64 以 /9j/ 开头,这是所有 JPEG 文件共同的开头字节 FF D8 FF。如果截图其实是 WebP,只是被存成了 .jpg,工具会提示「文件名是 .jpg,但内容是 WebP,输出按 image/webp。」,这时要先转成支持的格式,可以用 WebP 转换器。
Base64 转回图片
Base64 → 图片 接受纯 Base64、Data URI,或者含有 Data URI 的一段文本:CSS 规则、<img> 标签、Markdown 图片,以及把 / 转义成 \/ 的 JSON(PHP 的 json_encode 默认这样输出)。换行、URL 安全字母表(- 和 _)和缺少的 = 都能处理。解出的字节同样按内容识别格式,下载文件用对应的扩展名;Data URI 声明的是 image/png、内容却是 WebP 时,工具会指出来,并保存为 image.webp。
解不开时会给出位置。例如粘贴 data:image/png;base64,iVBORw0KGgo=AAAANSUhEUg,提示是「第 34 个字符是 =,它是填充符,只能出现在末尾」。
和其他工具的差别
2026-09-30 在桌面版 Chromium 上用同一组文件实测:改名为 .jpg 的 PNG、iPhone 风格的 HEIC、没有扩展名的 PNG、上面那个 SVG。
| 工具 | 在哪里编码 | 改名 .jpg 的 PNG | HEIC | 无扩展名 | SVG 输出 |
|---|---|---|---|---|---|
| 本工具 | 浏览器内 | image/png 并提示 | image/heic,提示无法预览 | image/png | Base64 或 URL 编码 |
| 在线工具大全 lddgo.net | 浏览器内 | image/jpeg | 无输出、无提示 | 无输出、无提示 | Base64 |
| base64-image.de | 上传到服务器(POST /encode),每个文件 1 MB | image/png | image/heic | File rejected | 改写后的 SVG 的 Base64(<rect …/> 变成 <rect …></rect>) |
| codebeautify.org | 浏览器内 | image/jpeg | image/heic | application/octet-stream | Base64 |
在浏览器内转换的两个工具按文件名取类型;按内容判断的 base64-image.de 需要先把文件上传到它的服务器。
限制
- 文件大小上限 100 MB,对应约 1.4 亿个 Base64 字符。输出超过 200 万个字符时不放进文本框(改版前 85 MB 的文件会让页面卡死),「复制」和「下载 .txt」得到完整文本。Chromium 与 Firefox 对 data URL 的上限是 512 MB,Safari 是 2048 MB(MDN)。
- 预览依赖浏览器:HEIC/HEIF 只有 Safari 17 及以上能显示(Can I use),TIFF 只有 Safari 能显示。无法预览时 Base64 仍然完整。
- 一次一个文件,不能填图片网址:工具不发出网络请求,请先把图片保存到本地。
- 不缩放、不压缩。需要变小先用图片压缩工具,SVG 可先用 SVG 压缩优化。
- 解码只认图片格式。其他文件的 Base64 请用 Base64 编码解码工具。
- 内嵌不一定更快。内嵌的图片只能随所在的 HTML 或 CSS 一起缓存,图片一改整个文件都要重新下载,适合只用一次的小图标。
FAQ
Base64 和 Data URI 有什么区别?
Base64 只是编码后的文本。Data URI 在前面加上类型,例如 data:image/png;base64,,可以直接放进 img 的 src 或 CSS 的 url()。接口文档要求“图片 Base64”时,通常要的是不带前缀的 Base64,例如百度文字识别 API 的 image 参数。
文件名是 .jpg,为什么输出是 image/png?
本工具读取文件开头的字节来判断格式。PNG 改名成 .jpg 仍然是 PNG,所以输出写 image/png,并提示扩展名不符。浏览器照样能显示这类图片,但会核对格式的接口可能拒收。
SVG 用 Base64 还是 URL 编码?
选短的那个。工具同时算出两种长度,默认选短的。URL 编码的 SVG 大部分仍可读,小图标通常更短;Base64 是原文件的 4/3 再加前缀。两种得到的图片相同。
转成 Base64 后会变大多少?
每 3 个字节变成 4 个字符,最后一组不足时用 = 补齐,长度是 4 × ⌈字节数 ÷ 3⌉。大文件约多 33.3%,很小的文件多一点。Data URI 还要加前缀,PNG 是 22 个字符。
图片会上传吗?
不会。文件由浏览器的 FileReader 读取,不发出任何请求,也不写入浏览器存储。实测 base64-image.de 与 base64.guru 会把文件上传到服务器再转换。