图片转 Base64
dataURL 格式 · CSS / HTML / JS 多格式输出 · 可嵌入代码
dataURL/CSS/HTML 多格式
dataURL 格式 · CSS / HTML / JS 多格式输出 · 可嵌入代码
用途:嵌入小图标 / LOGO 到 CSS / HTML 避免额外 HTTP 请求。
体积警告:Base64 后体积膨胀 ~33%,不适合大图。建议 < 5 KB 的小图才嵌入。
兼容性:所有现代浏览器支持。IE 8 起开始支持。
了解工具定位 · 使用场景 · 对比优势
将图片转为 Base64 编码,直接生成 dataURL、CSS 或 HTML 格式的代码。前端开发者在嵌入小图标、CSS 背景图或 HTML 邮件图片时,无需单独上传文件。拖拽或点击选择图片,编码结果即时复制。所有转换在浏览器本地完成,图片不会上传到任何服务器。
前端开发者在写邮件模板或单页应用时,需要将小图标或背景图直接嵌入 CSS 文件,避免额外的 HTTP 请求。使用本工具将图片转为 data:image 格式的 Base64 字符串,粘贴到 background-image 属性中,即可实现零网络依赖的图片渲染,尤其适合移动端弱网环境。
邮件营销人员制作 HTML 邮件时,图片附件经常被邮件客户端拦截或无法加载。将 Logo、按钮图标等关键图片转为 Base64 后直接写入 <img src="data:image/..."> 标签,图片随邮件正文一起渲染,彻底绕过外链图片屏蔽,提升邮件打开率和点击率。
微信小程序开发者处理用户头像或商品缩略图时,频繁请求图片资源会拖慢页面加载速度。将 10KB 以下的小图转为 Base64 直接内嵌到代码包中,省去 CDN 请求耗时,让页面在首屏渲染时即刻显示图片,用户体验流畅度提升明显。
企业内网用户撰写技术文档或操作手册时,需要插入截图但无法上传至外网图床。使用本工具将截图转为 Base64 字符串,直接粘贴到 Markdown 或 HTML 文档的 <img> 标签中,文档本身即成为自包含的离线文件,无需额外维护图片附件。
移动端 H5 活动页设计师需要将多个小图标(如箭头、关闭按钮、加载动画)一次性嵌入页面。将每张图标分别转为 Base64 后,统一写入 CSS 的 content 属性或 <img> 标签,页面仅需加载一个 HTML 文件即可完成所有图标渲染,避免多请求导致的页面闪烁。
| 维度 | 本工具 | 竞品 A (Base64.Guru) | 传统方法 |
|---|---|---|---|
| 数据隐私 | 纯浏览器端处理,文件不上传服务器 | 上传至服务器端转换,文件暂存后删除 | 依赖本地软件或命令行工具,文件不离开本地 |
| 处理速度 | 1 秒内完成,取决于文件大小 | 2-5 秒,受上传带宽和服务器负载影响 | 数秒至数分钟,取决于软件启动和操作流程 |
| 离线可用 | 完全离线,无需网络 | 必须联网 | 完全离线 |
| 输出格式 | dataURL、CSS background、HTML img 标签,一键复制 | 仅 dataURL,需手动拼接 CSS/HTML | 需手动输入命令或使用软件导出,格式单一 |
| 文件大小限制 | 受浏览器内存限制,通常 100MB 以内 | 通常限制 5-10MB,大型文件需付费 | 无限制,取决于本地硬件 |
| 使用门槛 | 零门槛,打开即用 | 需访问网站,上传文件 | 需安装软件或熟悉命令行,学习成本高 |
上手步骤 · 输入输出 · 避坑提示
直接在地址栏输入 data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...将 dataURL 写入 HTML 的 <img src="..."> 或 CSS 的 background-image: url(...)浏览器地址栏对 dataURL 长度有限制(Chrome 约 2MB),且无法渲染跨域或大尺寸图片;dataURL 只能用在文档上下文
复制结果:<img src="data:image/png;base64,iVBOR..."> 然后粘贴成:<img src="<img src=...">只复制 data:image/... 这一整段 base64 字符串,不含外层 HTML 标签工具输出的是完整 HTML 标签,但用户若想嵌入到自己的模板中,应只取 src 属性值,否则会产生嵌套标签
把 data:image/png;base64,iVBOR... 这个字符串保存为 .txt 文件发给后端将 base64 解码为二进制数据后保存为 .png 文件,或使用 <input type="file"> 上传原始图片文件Base64 编码比原始二进制大 33%;后端通常期望接收原始文件流而非编码字符串,否则需额外解码步骤
background-image: data:image/png;base64,iVBOR...;background-image: url('data:image/png;base64,iVBOR...');CSS 的 background-image 属性值必须是 url() 函数包裹的 URI,直接写 dataURL 字符串会被浏览器忽略
<img src="data:image/png;base64,iVBOR...data:image/jpeg;base64,/9j/4AAQ...">每张图片单独使用一个 <img> 标签,或使用 CSS sprite 技术一个 src 属性只能包含一个 dataURL;拼接多个会导致浏览器只解析第一个 data: 前缀后的内容,其余被丢弃
把 500KB 的 banner 图片也转成 Base64 内联到 HTML 中仅对小图标(< 10KB)或无法单独请求的场景(如邮件 HTML)使用 Base64;大图仍用 <img src="url"> 并利用浏览器缓存Base64 内联图片无法被浏览器独立缓存,每次页面加载都要重新解析;大图会使 HTML 体积膨胀,拖慢首屏渲染
将 JPEG 图片转成 Base64 后使用 data:image/png;base64,...使用正确的 MIME 类型:JPEG → image/jpeg,PNG → image/png,GIF → image/gif浏览器根据 dataURL 中的 MIME 类型解析数据;类型不匹配时浏览器可能拒绝渲染或显示为损坏图标
在 HTTP 页面中通过 dataURL 嵌入包含用户隐私的截图使用 HTTPS 页面,或通过后端签名 URL 控制访问权限dataURL 内容直接暴露在 HTML 源码中,任何能查看页面源码的人都能获取图片数据;不适合传输敏感信息
公式推导 · 流程图解 · 依据出处
dataURL = "data:" + mimeType + ";base64," + base64String
dataURL — Base64 编码后的完整数据 URImimeType — 图片的 MIME 类型(如 image/png)base64String — 图片二进制数据的 Base64 编码字符串将一张 100×100 像素的 PNG 图片(文件大小 2,048 字节)转为 Base64。mimeType = "image/png",base64String 由工具计算得到(如 "iVBORw0KGgo...")。最终 dataURL = "data:image/png;base64,iVBORw0KGgo..."。该字符串可直接用于 HTML 的 <img src="..."> 或 CSS 的 background-image: url(...)。
适用于所有常见图片格式(PNG/JPEG/GIF/SVG/WebP)。不适用于视频、音频或非图像二进制文件(需使用其他 MIME 类型)。Base64 编码会增加约 33% 的数据体积,大文件(>1MB)建议使用文件 URL 而非 dataURL。
3 种主流语言 · 复制即用
import base64
# 读取图片文件并编码为 Base64
with open('image.png', 'rb') as f:
img_data = f.read()
# 编码为 Base64 字符串
b64_str = base64.b64encode(img_data).decode('ascii')
# 生成 dataURL 格式(用于 HTML/CSS 内联)
data_url = f'data:image/png;base64,{b64_str}'
print(data_url[:80] + '...') # data:image/png;base64,iVBORw0KGgoAAA...
# 生成 CSS background-image 格式
css_bg = f'background-image: url("{data_url}");'
print(css_bg[:80] + '...') # background-image: url("data:image/png;base64,...
# 生成 HTML <img> 格式
html_img = f'<img src="{data_url}" alt="inline image" />'
print(html_img[:80] + '...') # <img src="data:image/png;base64,iVBORw0KGgo..."package main
import (
"encoding/base64"
"fmt"
"os"
)
func main() {
// 读取图片文件
imgBytes, err := os.ReadFile("image.png")
if err != nil {
panic(err)
}
// 编码为 Base64 字符串
b64Str := base64.StdEncoding.EncodeToString(imgBytes)
// 生成 dataURL 格式
dataURL := fmt.Sprintf("data:image/png;base64,%s", b64Str)
fmt.Println(dataURL[:80] + "...") // data:image/png;base64,iVBORw0KGgoAAA...
// 生成 CSS 格式
css := fmt.Sprintf("background-image: url(\"%s\");", dataURL)
fmt.Println(css[:80] + "...") // background-image: url("data:image/png;base64,...
// 生成 HTML 格式
html := fmt.Sprintf("<img src=\"%s\" alt=\"inline image\" />", dataURL)
fmt.Println(html[:80] + "...") // <img src="data:image/png;base64,iVBORw0KGgo..."
}const fs = require('fs');
// 读取图片文件
const imgBuffer = fs.readFileSync('image.png');
// 编码为 Base64 字符串
const b64Str = imgBuffer.toString('base64');
// 生成 dataURL 格式(用于 HTML/CSS 内联)
const dataUrl = `data:image/png;base64,${b64Str}`;
console.log(dataUrl.substring(0, 80) + '...'); // data:image/png;base64,iVBORw0KGgoAAA...
// 生成 CSS background-image 格式
const css = `background-image: url("${dataUrl}");`;
console.log(css.substring(0, 80) + '...'); // background-image: url("data:image/png;base64,...
// 生成 HTML <img> 格式
const html = `<img src="${dataUrl}" alt="inline image" />`;
console.log(html.substring(0, 80) + '...'); // <img src="data:image/png;base64,iVBORw0KGgo..."8 个高频疑问
「格式转换」下的其他工具