图片转Base64工具把一张图片文件读成二进制,再按RFC 4648标准编码成只含A-Z、a-z、0-9、+、/和=的文本字符串,也可以反过来把Base64字符串还原成可下载的图片。它解决的是「不想额外发一个图片文件」的问题,比如做单文件HTML页面时,把一张3KB的小图标内联成data:image/png;base64,...写进CSS或img标签,页面就不用再请求外部图片。另一个常见场景是调接口时对方要求图片以Base64放在JSON字段里,你可以直接把PNG拖进来复制结果。注意Base64会让体积膨胀约33%,100KB的JPG编码后大约变成133KB文本。
| 对比维度 | 本工具 | 手工/替代做法 |
|---|---|---|
| 操作耗时 | 拖入即出结果,1MB图片约0.2秒 | 用Python写base64.b64encode,需装环境、写脚本,约3-5分钟 |
| 体积变化 | 自动显示原始大小与编码后大小,如100KB→133KB | 手工算需记住4/3系数,容易估错 |
| 前缀处理 | 一键切换是否带data:image/png;base64,前缀 | 手写前缀易拼错MIME类型,如把jpeg写成jpg |
| 反向还原 | 粘贴字符串直接预览并下载图片 | 需用base64 -d命令或在线解码,多一步存文件 |
| 隐私 | 本地处理,无网络上传 | 部分在线工具会把图片传到服务器,存在泄露风险 |
按RFC 4648,每3字节原始数据编码成4个字符,体积变为原来的4/3,即约133.3%。例如一张100KB的JPG编码后约133KB,再算上data:image/jpeg;base64,这22个字符的前缀。所以超过200KB的图不建议内联,会明显拖慢HTML解析。
浏览器端没有硬性上限,但受内存限制。实测Chrome下10MB的PNG编码约需1-2秒并占用约40MB内存,超过50MB容易卡顿甚至崩溃。建议单张控制在5MB以内,更大的图先用图片压缩工具处理。
不会。Base64只是编码方式,不解析图像内容,GIF的全部帧数据原样保留。把结果写进img的src,动图照常播放。但动图体积大,一个500KB的GIF编码后约667KB,内联进HTML并不划算。
Base64按3字节一组编码,若原始数据长度不是3的倍数,就用=补齐。余1字节补2个=,余2字节补1个=。例如长度10字节的图片,10 mod 3 = 1,编码结果末尾会有两个==。粘贴时别删掉等号,否则解码会失败。
可以。写成background-image: url("data:image/png;base64,....")即可。但注意CSS文件里不能有换行,且IE8以下对data URI有32KB限制。现代浏览器单条data URI建议不超过2MB,否则样式表解析会变慢。
不会。编码和解码全部用JavaScript的FileReader和atob/btoa在浏览器本地完成,图片不经过任何网络请求。你可以断网后打开页面测试,功能完全正常。关闭标签页后内存中的字符串即被释放。
适用于JPG、PNG、GIF、WebP四种格式,编码遵循RFC 4648标准,不改变像素数据,属于无损转换。体积会增大约33%,超过200KB的图片不建议内联进HTML或CSS。所有计算在浏览器本地完成,图片和字符串不会上传到任何服务器,断网可用。