Windowsビットマップ (.bmp)
Microsoft 標準Bitmap Image File (BMP) は、Microsoft社の基本的なデバイス非依存ラスターグラフィックス形式であり、非圧縮またはRLE圧縮されたスキャンラインをハードウェアのフレームバッファと直接互換性を持たせて格納します。
BMP を PNG に変換
無料のブラウザ内 BMP から PNG へのコンバーター。お使いのデバイスでファイルを即座に変換します。
調査とメタデータ
オペレーティングシステムやファイル解析ツールは、先頭のバイナリバイトシーケンスを検査することで BMP ファイルを識別します:
バイトレベルのヘッダーシグネチャ (マジックバイト)
オペレーティングシステムやファイル解析ツールは、先頭のバイナリバイトシーケンスを検査することで BMP ファイルを識別します:
16進数シグネチャ (オフセット 0):
42 4DASCII表現: BM
標準化: Microsoft Windows Device-Independent Bitmap (DIB) Architecture
技術仕様
| コンテナアーキテクチャ | BITMAPFILEHEADER followed by BITMAPINFOHEADER (DIB) and raster pixel array |
| 圧縮 | Uncompressed raw scanlines, or optional BI_RLE8 / BI_RLE4 run-length encoding |
| バイトエンディアン | Little-Endian (Intel x86 byte order) |
| 色空間 | Device Dependent RGB, sRGB (BITMAPV5HEADER embedded) |
| チャンネルと構造 | 1-bit monochrome, 4-bit / 8-bit paletted, 16-bit, 24-bit RGB, or 32-bit RGBA |
| 最大寸法 | 2,147,483,647 x 2,147,483,647 pixels (signed 32-bit integer) |
| 透過性 | 32-bit BGRA alpha mask supported in modern BITMAPV3HEADER and V5HEADER formats |
| ストリーミングとプログレッシブ | Non-streamable; scanlines stored upside-down (bottom-up) unless height is negative |
技術比較マトリックス: BMP 対 競合製品
| 技術属性 | BMP (現在) | PNG | TIFF | JPG |
|---|---|---|---|---|
| 圧縮モード | 非圧縮 / 最小限のRLE | ロスレスDeflate(約70%小型) | 非圧縮 / LZW / Zip | 非可逆DCT(約90%小型) |
| デコード速度 | 瞬時のメモリコピー | Deflate解凍が必要 | LZW/ZIP解凍が必要 | IDCT計算が必要 |
| スキャンライン順序 | 下から上(反転) | 上から下 | 上から下 / ストリップ | 上から下 MCUブロック |
| ウェブ適性 | 非常に不向き(ペイロードが肥大化) | グラフィックスに最適 | 不向き(デスクトップパブリッシング) | 写真に最適 |
一般的な破損モードと16進数リカバリガイド
画像が斜めに剪断(シアー)されたり、角度が歪んだりして描画される。
根本原因: 行パディングの計算が誤っている(各スキャンラインを4バイト境界にパディングし忘れている)。
復旧: File2File Image Converterを使用して再エンコードし、正しい32ビットスキャンラインストライドを強制する。
セキュリティ分析とパーサー攻撃ベクトル
BMPデコーダーは、信頼できないDIBヘッダーの寸法に基づいてバッファを割り当てる際、バッファオーバーリードの脆弱性を抱えがちです。
既知の攻撃ベクター
- width * height * bpp の計算における整数オーバーフローにより、小さなヒープ割当と範囲外書き込みを引き起こす。
- 破損したRLE8/RLE4ランレングスエスケープシーケンスにより、割り当てられたバッファを超えたメモリ書き込みが発生する。
- 巧妙に細工されたヘッダー寸法によって引き起こされる、マルチギガバイトのメモリ割り当てを介したサービス拒否(DoS)。
防御的ベストプラクティス:
歴史的背景とマイルストーン
主な利点とメリット
- 圧縮劣化ゼロ:圧縮アーティファクトなしで、100%ビット完全なピクセルストレージを実現。
- Windows、Linux、macOSのすべてのバージョンにおけるユニバーサルなネイティブオペレーティングシステムサポート。
- 極めてシンプルなデコード複雑性により、組み込みマイクロコントローラーやグラフィックスプログラミング教育に最適。
技術的な制限とデメリット
- DEFLATEやハフマン符号化のような現代のエントロピー圧縮がないため、ファイルサイズが非常に巨大になる。
- ウェブ転送やモバイルネットワーク配信には非効率。
- ボトムアップ方式のスキャンライン順序のため、現代のトップダウン式グラフィックスパイプラインでは垂直方向の行反転が必要。
興味深い技術トリビア
- BMPは、OS/2で使用されている数学的デカルト座標系のため、デフォルトで画像の走査線を上下逆(下から上)に格納します。
- BMPヘッダーの高さ値に負数を設定すると、画像は正立(上から下)でデコードされます。
- BMPファイルのすべてのスキャンラインは、4バイトの倍数(32ビット境界アライメント)になるようにゼロパディングする必要があります。
よくある技術的な質問
BMP ファイルのサイズが非常に大きいのはなぜですか?
BMP ファイルは、すべてのピクセルに対して未圧縮の生の色値を格納するためです。一方、PNG などのフォーマットは、画質を一切落とさずにデータを圧縮します。
BMP は透明度をサポートしていますか?
はい。32 ビット BMP ファイル(BITMAPV3HEADER 以降を使用)は 8 ビットのアルファチャンネルを格納できますが、古いソフトウェアではサポート状況が異なる場合があります。
BMP ファイルのサイズを小さくするにはどうすればよいですか?
File2File.app を使って BMP ファイルを PNG に変換すると、視覚的な品質を一切損なうことなく、通常ファイルサイズを 60% から 85% 削減できます。