如何将 BMP 转换为 Base64
- 把
.bmp文件拖到框中,或用文件选择器选择它。 - 如果要保持位图格式,不要改动图片选项,编码的就是原始字节。
- 如果要缩小体积,在 转换为 中选择 PNG。勾选 移除元数据(EXIF) 或设置 最大宽度 也会转换图片;此时即使选择 保持原格式,结果也是 PNG,因为浏览器无法写出 BMP 文件。
- 选择 输出为,然后点击 复制输出。
预览会显示原始大小,转换后还会在旁边显示新的大小。
为什么 BMP 会生成巨大的 Base64 字符串
大多数 BMP 文件把每个像素都存为原始字节,没有任何压缩。文件大小只取决于尺寸,与图片内容无关:
| 图片 | BMP 文件 | BMP 的 Base64 | 同一图片的 PNG |
|---|---|---|---|
| 32×32,24 位 | 3,126 字节 | 4,168 个字符 | 取决于内容 |
| 640×480,24 位 | 921,654 字节 | 1,228,872 个字符 | 取决于内容 |
| 800×500 的设置列表截图 | 1,200,054 字节 | 1,600,072 个字符 | 23,085 字节(30,780 个字符) |
最后一行是用一张简单的界面风格图片实测的结果:PNG 小了大约 52 倍,而且是无损的。照片的压缩率会低一些,但 PNG 或 JPEG 依然远胜原始 BMP。除非接收系统要求 BMP,否则请先转换。
什么时候仍然需要 BMP
有些系统只能读取位图:旧版 Windows 软件、某些打印机和自助终端软件、嵌入式显示屏,以及不带解码器、直接写入原始像素的单片机项目。对于这些场景,请保持原格式,原样编码文件。如果设备要求特定的位深,例如 1 位单色或 16 位,请先在图像编辑器中处理好文件;只要不设置任何图片选项,本工具就会保留原始字节。
BMP 的 Base64 长什么样
Qk02DAAAAAAAADYAAAAoAAAA...
这是一张 32×32 的 24 位 BMP:先是 BM,然后是 3,126 字节的文件大小、保留字节和值为 54 的像素数据偏移。尺寸不同,文件大小就不同,Qk 后面的字符也随之变化,所以只有前两个字符是可靠的标志。
如果设备拒绝解码后的文件,请比较文件头:带 alpha 通道的 32 位 BMP,以及使用更新、更大信息头的 BMP,是旧版读取程序拒绝在 PC 上能正常打开的文件的典型原因。
要把 Base64 还原为 .bmp 文件,请使用 Base64 转 BMP。其他图片格式请使用 图片转 Base64,浏览器能读取的格式它都接受。
常见问题
浏览器能显示 BMP 的 data URI 吗?
能,Chrome、Edge、Firefox 和 Safari 都能在 <img> 和 CSS 中解码 BMP。这种格式可以用,只是很浪费。
把 BMP 转成 PNG 会损失画质吗?
不会。PNG 是无损格式,每个像素都保持不变。只有转成 JPEG 或有损 WebP 才会改变像素。
怎么在 Base64 中认出 BMP?
BMP 文件以字母 BM 开头,编码后是 Qk。后面的字符承载文件大小,所以第三个字符不固定;Qk02 是很常见的开头。