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。