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 のビットマップファイルは 2 文字の BM で始まり、これは Base64 文字列の先頭で Qk にエンコードされます。その後に続くヘッダーには、ファイルサイズ、ピクセルデータのオフセット、画像サイズ、ビット深度が格納されています。BMP データは、古い Windows アプリケーション、クリップボードやスクリーンショットのエクスポート、POS システムや産業用システム、マイコン用のディスプレイツール、テストフィクスチャなどで見かけます。MIME タイプは通常 image/bmp ですが、image/x-ms-bmp も使われます。

ブラウザは一般的な BMP の種類を表示できますが、非常に古い OS/2 ビットマップや珍しい圧縮モードは、ブラウザによっては表示されないことがあります。文字列が Qk で始まるのにプレビューが空のままの場合は、「オリジナル」でダウンロードしてデスクトップの画像ビューアーで開いてください。

BMP ファイルが大きくなる理由

このツールは非圧縮の 32 ビットピクセル(1 ピクセルあたり 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 なら 10 分の 1 程度のサイズになることがよくあります。BMP は、受け取る側のソフトウェアが必要とする場合にのみ使用してください。

32 ビット出力について

出力にはアルファチャンネルが含まれるため、アルファチャンネルを読み込めるプログラムでは透明な部分が透明のまま表示されます。古いプログラムの中にはアルファチャンネルを無視するものがあり、その部分が黒や白で表示されることがあります。その場合は、変換前に元の画像から透過を取り除いてください。

Windows でブラウザを使わずに Base64 の BMP をデコードするなら、PowerShell で十分です。

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

よくある質問

BMP が元のファイルよりはるかに大きいのはなぜですか?

BMP の出力は非圧縮で、1 ピクセルあたり 4 バイトを使用します。同じ画像でも、圧縮された PNG や JPEG のほうが通常ははるかに小さくなります。

BMP は透過に対応していますか?

はい。このツールが作成する 32 ビット BMP ファイルにはアルファチャンネルが含まれます。透過が表示されるかどうかは、ファイルを開くプログラムによって異なります。

Base64 文字列が BMP かどうかはどうすれば分かりますか?
BMP のデータは、文字 BM を Base64 にした Qk で始まります。このツールはヘッダーのバイト列を読み取って形式を確認します。
BMP を Base64 に戻せますか?
はい、BMP を Base64 に変換で戻せます。非圧縮ビットマップの Base64 文字列は非常に長くなることがあるため、先に PNG に変換することも検討してください。