Base64 转 BMP

把 Base64 位图数据保存为 .bmp 文件,或把浏览器能显示的任意 Base64 图片转换为未压缩的 32 位 BMP,供旧版 Windows 软件和嵌入式工具使用。

完全在浏览器中运行,不会上传任何数据。

使用方法

  1. 粘贴 Base64 字符串或 data:image/bmp;base64 URI,也支持 PNG、JPEG、WebP 等格式。
  2. 查看预览、尺寸和解码后的大小。
  3. 下载格式已预设为 BMP。如果数据本来就是 BMP 且需要保持不变,请改选“原始文件”。
  4. 下载 .bmp 文件。

在 Base64 中识别位图

Windows 位图文件以两个字母 BM 开头,编码后就是 Base64 字符串最前面的 Qk。随后的文件头记录了文件大小、像素数据的偏移量、尺寸和色深。BMP 数据常见于旧版 Windows 应用、剪贴板和截图导出、收银及工业系统、单片机屏幕取模工具和测试用例。MIME 类型通常为 image/bmp,有时也会看到 image/x-ms-bmp。

浏览器可以显示常见的 BMP 变体,但很老的 OS/2 位图和少见的压缩模式未必在所有浏览器中都能显示。如果字符串以 Qk 开头却没有预览,请以“原始文件”格式下载,再用桌面看图软件打开。

BMP 文件为什么这么大

转换器写出的是未压缩的 32 位像素,每个像素占 4 个字节,因此文件大小只取决于尺寸,与图片内容无关:

尺寸BMP 大小Base64 大小
640 × 480约 1.2 MB约 1.6 MB
1920 × 1080约 8.3 MB约 11 MB
3840 × 2160约 33 MB约 44 MB

同一张截图保存为 PNG 往往只有十分之一大小。只有在目标软件明确要求时才使用 BMP。

关于 32 位输出

输出文件带有 Alpha 通道,在支持的程序中透明区域会保持透明。部分旧程序会忽略 Alpha 通道,把这些区域显示为黑色或白色。遇到这种情况,请先去掉源图片的透明背景再转换。

在 Windows 上不借助浏览器解码 Base64 BMP,用 PowerShell 就够了:

$b64 = Get-Content .\image.txt -Raw
[IO.File]::WriteAllBytes("$PWD\image.bmp", [Convert]::FromBase64String($b64))

常见问题

为什么 BMP 比原图大这么多?

BMP 输出没有压缩,每个像素占用 4 个字节。同一张图片保存为经过压缩的 PNG 或 JPEG,通常要小得多。

BMP 支持透明背景吗?

支持。本工具生成的 32 位 BMP 文件包含 Alpha 通道,但能否显示透明效果取决于打开文件的程序。

怎样判断一个 Base64 字符串是 BMP?
BMP 数据以 Qk 开头,这是字母 BM 的 Base64 形式。本工具还会读取文件头字节来确认格式。
可以把 BMP 再转回 Base64 吗?
可以,使用 BMP 转 Base64 即可。未压缩位图的 Base64 字符串可能非常长,可以考虑先转换为 PNG。