带不带 data:image/…;base64, 前缀都可以;中间的换行和空格会自动忽略。
粘一段 Base64,看看它到底是哪张图。
不带 dataURL 前缀时,工具会读二进制的「魔数」来判断它到底是什么图。
| 格式 | 文件头(十六进制) | 文件头(可读) | 导出扩展名 |
|---|---|---|---|
| PNG | 89 50 4E 47 | ‰PNG | .png |
| JPEG | FF D8 FF | ÿØÿ | .jpg |
| GIF | 47 49 46 38 | GIF8 | .gif |
| WebP | 52 49 46 46 … 57 45 42 50 | RIFF…WEBP | .webp |
| BMP | 42 4D | BM | .bmp |
| ICO | 00 00 01 00 | (图标) | .ico |
报错了别急,九成是下面这几种情况之一。
| 现象 | 多半是因为 | 怎么解决 |
|---|---|---|
| 提示「包含非法字符」 | 混进了引号、逗号、HTML 实体、中文空格或说明文字 | 只保留 A-Z a-z 0-9 + / = 这些字符,删掉前后多余内容 |
| 提示「解码失败」 | 字符串被截断,长度不是 4 的倍数,或少了末尾的 = | 重新完整复制一次,注意别漏掉尾巴 |
| 提示「无法识别图片类型」 | 数据不是图片(可能是文本/PDF),或前缀里的 MIME 写错了 | 确认来源是图片;纯 Base64 时把前缀补上试试 |
| 预览是空白 / 裂图 | 浏览器不支持该格式,或数据本身已损坏 | 下载下来用看图软件打开确认;换 Chrome / Edge 再试 |
| 图片特别大、页面卡 | Base64 里塞了一张几 MB 的图 | 下载后本地查看,别在页面里反复预览 |
⚠️ 免责声明:本工具仅做 Base64 解码与格式识别,不会修复已损坏的数据;若原始数据不完整,解码结果可能无法正常显示。
解码能力受浏览器支持的图片格式限制(PNG / JPEG / GIF / WebP 通用,BMP、ICO 等在个别浏览器上可能无法预览,但下载下来的文件本身是完整的)。
所有处理均在你的浏览器本地完成,你粘贴的内容不会上传到任何服务器,页面关闭后数据即清除。
接口返回一大串 iVBORw0KGgoAAAANSUhEUg…、邮件源码里躺着一段 data:image/png;base64,…、数据库里存了一列看不懂的字符——你想知道这串东西到底是什么图,或者干脆把它还原成文件。
这就是这个工具干的事:把 Base64 字符串解码回图片,直接预览并下载。
它对你粘贴的内容很宽容,两种写法都认:
① 完整 dataURL:data:image/png;base64,iVBOR…——直接从前缀里读出 MIME 类型,最准确;
② 纯 Base64:只有 iVBOR…——那就看二进制的「文件头魔数」:PNG 开头是 89 50 4E 47、JPEG 是 FF D8 FF、GIF 是 47 49 46、WebP 是 RIFF…WEBP、BMP 是 42 4D、ICO 是 00 00 01 00。看开头几个字节就能判断它是什么格式,这也是很多软件识别文件类型的通用做法。
解码过程就三步:剥掉前缀 → atob 解成二进制 → 装进 Blob 生成图片地址。中间的换行、空格会自动忽略,所以从邮件、日志、JSON 里复制出来带缩进也不用手工清理。
解不出来的时候,它会明确告诉你问题在哪,而不是默默失败:
· 「包含非法字符」——多半是混进了引号、逗号、HTML 实体(比如 <)或者前后带了说明文字,Base64 只该有 A-Z、a-z、0-9、+、/、= 这些字符;
· 「解码失败」——字符串被截断了,长度不是 4 的倍数,或者尾巴的 = 补位符丢了,重新完整复制一次;
· 「无法识别图片类型」——这段数据压根不是图片(可能是文本或 PDF),或者前缀里的 MIME 写错了。
解出来之后,页面会告诉你图片格式、像素尺寸、文件大小,给你预览,再一键下载成 .png / .jpg / .gif 等对应后缀的文件。
还有个偷懒的用法:如果你把 Base64 存在 txt 里,直接把文件拖进下面的区域就行,不用手动选中复制。
两点实话:预览能力受浏览器限制——PNG/JPEG/GIF/WebP 通用,BMP、ICO 在个别浏览器上可能显示不出来,但下载下来的文件是完整的;另外工具只做解码,修不了已经损坏的数据,源数据不完整的话解出来也是坏的。
最后:你粘贴的内容全部留在本地浏览器里,不会上传到任何服务器,关掉页面就清干净了。
怎么解:
① 归一化:去掉首尾空白与中间所有换行、空格,避免从日志/邮件里复制出来带缩进;
② 剥前缀:用正则匹配 ^data:([^;,]+);base64,,命中就取出 MIME 类型并截掉前缀;
③ 字符集校验:只允许 A-Z a-z 0-9 + / = - _,出现别的字符立刻给出「非法字符」提示(顺带支持 URL-safe 的 - _ 变体);
④ 补齐补位:把长度补到 4 的倍数后调用 atob 解码成二进制字符串,再转成 Uint8Array 装进 Blob;
⑤ 定类型:有 MIME 就直接用,没有就读前 12 个字节的魔数(PNG / JPEG / GIF / WebP / BMP / ICO)判断;
⑥ 预览与下载:用 blob URL 加载图片拿到宽高,按类型给出扩展名,一键下载。
它不做:不修复损坏数据、不做图片编辑、不解码非图片内容(如 PDF、音频)。
data:image/png;base64, 里读出 MIME 类型(这里是 image/png),一步到位;89 50 4E 47、JPEG 是 FF D8 FF、GIF 是 47 49 46、WebP 是 RIFF…WEBP,这个方法也很可靠。- 和 _)。< ");imgData = "…");= 补位,所以:= 被当成多余符号删掉了;=,但如果长度本身对不上,就会报这个错。atob 和 Blob,全部在你自己的浏览器里完成,不会发送到任何服务器,关掉页面数据即清除。审核通过后就会展示在留言板上,稍安勿躁~
还没有留言,来抢沙发吧!