BMP を Base64 に変換する手順
.bmpファイルをボックスにドロップするか、ファイル選択で選びます。- ビットマップのまま使うなら、画像オプションには触れないでください。元のバイト列がそのままエンコードされます。
- 縮小するなら、変換先 で PNG を選びます。メタデータ(EXIF)を削除 にチェックを入れたり 最大幅 を設定したりしても画像は変換され、ブラウザは BMP ファイルを書き出せないため、形式を維持 を選んでいても結果は PNG になります。
- 出力形式 を選び、出力をコピー を押します。
プレビューには元のサイズが表示され、変換後はその横に新しいサイズが表示されます。
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 文字) |
最後の行は、シンプルな UI 風の画像で実際に試した結果で、PNG は可逆のまま約 52 分の 1 になりました。写真はそこまで圧縮できませんが、それでも PNG や JPEG は生の BMP を大きく下回ります。受け取る側が BMP を求めているのでなければ、先に変換してください。
それでも BMP が必要な場合
ビットマップしか読めないシステムもあります。古い Windows のソフトウェア、一部のプリンターやキオスクのソフトウェア、デコーダーなしで生のピクセルを転送する組み込みディスプレイやマイコンのプロジェクトなどです。その場合は形式を維持し、ファイルを変更せずにエンコードしてください。1 ビットのモノクロや 16 ビットなど、デバイスが特定のビット深度を求めるなら、先に画像編集ソフトでファイルを用意してください。このツールは、画像オプションを何も設定しない限り元のバイト列を保ちます。
BMP の Base64 の見た目
Qk02DAAAAAAAADYAAAAoAAAA...
これは 32×32 の 24 ビット BMP です。BM の後に、3,126 バイトのファイルサイズ、予約バイト、54 というピクセルデータのオフセットが続きます。寸法が変わるとファイルサイズが変わり、それに伴って Qk の後の文字も変わるため、確実な目印になるのは最初の 2 文字だけです。
デコードしたファイルをデバイスが拒否する場合は、ヘッダーを比べてください。アルファチャンネル付きの 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 になります。その後の文字にはファイルサイズが入っているので 3 文字目は変わりますが、Qk02 で始まるものが非常に多いです。