Windowsビットマップ (.bmp)

Microsoft 標準

Bitmap Image File (BMP) は、Microsoft社の基本的なデバイス非依存ラスターグラフィックス形式であり、非圧縮またはRLE圧縮されたスキャンラインをハードウェアのフレームバッファと直接互換性のある形式で格納します。

BMP を PNG に変換

無料のブラウザ内 BMP から PNG へのコンバーター。お使いのデバイスでファイルを即座に変換します。

調査とメタデータ

オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してBMPファイルを識別します:

ファイルを選択するか、ここにドロップしてください

プライベート - ファイルがデバイスの外に出ることはありません

または貼り付け Ctrl+V
ネットワーク送信ゼロのプライバシー保証: 外部サーバーへのデータ送信は0バイトです。すべての処理はお使いのブラウザのサンドボックス内でローカルに実行されます。

バイトレベルのヘッダーシグネチャ (マジックバイト)

オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してBMPファイルを識別します:

16進数シグネチャ(オフセット0):

42 4D

ASCII表現: BM

標準化: Microsoft Windows Device-Independent Bitmap(DIB)アーキテクチャ

技術仕様

コンテナアーキテクチャBITMAPFILEHEADERに続いてBITMAPINFOHEADER(DIB)とラスターピクセル配列を格納
圧縮非圧縮の生走査線、またはオプションのBI_RLE8 / BI_RLE4ランレングス符号化
バイトエンディアンリトルエンディアン(Intel x86のバイト順)
色空間デバイス依存RGB, sRGB(BITMAPV5HEADERに埋め込み)
チャンネルと構造1ビットモノクロ、4/8ビットパレット、16ビット、24ビットRGB、または32ビットRGBA
最大寸法2,147,483,647 x 2,147,483,647ピクセル(符号付き32ビット整数)
透過性最新のBITMAPV3HEADERおよびV5HEADER形式では32ビットBGRAアルファマスクに対応
ストリーミングとプログレッシブストリーミング不可。高さが負の場合を除き、走査線は上下逆(下から上)に格納

技術比較表:BMPと競合製品

技術属性BMP (現在)PNGTIFFJPG
圧縮モード非圧縮 / 最小限のRLE可逆のDeflate圧縮。ファイルサイズの削減量は画像内容によって異なる非圧縮 / LZW / Zip非可逆DCT(約90%小型)
デコード速度瞬時のメモリコピーDeflate解凍が必要LZW/ZIP解凍が必要IDCT計算が必要
スキャンライン順序下から上(反転)上から下上から下 / ストリップ上から下 MCUブロック
ウェブ適性非常に不向き(ペイロードが肥大化)グラフィックスに最適不向き(デスクトップパブリッシング)写真に最適

一般的な破損モードと16進数リカバリガイド

画像が斜めに剪断(シアー)されたり、角度が歪んだりして描画される。

根本原因: 行パディングの計算が誤っている(各スキャンラインを4バイト境界にパディングし忘れている)。

復旧: File2File.app Image Converterを使用して再エンコードし、正しい32ビットスキャンラインストライドを強制する。

セキュリティ分析とパーサー攻撃ベクトル

BMPデコーダーは、信頼できないDIBヘッダーの寸法に基づいてバッファを割り当てる際、バッファオーバーリードの脆弱性を抱えがちです。

既知の攻撃ベクター

  • width * height * bpp の計算における整数オーバーフローにより、小さなヒープ割当と範囲外書き込みを引き起こす。
  • 破損したRLE8/RLE4ランレングスエスケープシーケンスにより、割り当てられたバッファを超えたメモリ書き込みが発生する。
  • 巧妙に細工されたヘッダー寸法によって引き起こされる、マルチギガバイトのメモリ割り当てを介したサービス拒否(DoS)。

防御的ベストプラクティス: 宛先メモリを割り当てる前に、DIBヘッダーの幅、高さ、およびビット深度の境界を厳格に検証します。

歴史的背景とマイルストーン

1998Windows 98で BITMAPV5HEADER が導入され、ICCカラープロファイル管理とガンマ補正が追加されました。
1990Windows 3.0により、オペレーティングシステム全体で BITMAPINFOHEADER DIB仕様が標準化されました。
1987ネイティブの表示用ラスター形式として、Windows 2.0 および OS/2 1.1 とともに導入されました。

主なメリット

  • 圧縮劣化ゼロ:圧縮アーティファクトなしで、100%ビット完全なピクセルストレージを実現。
  • WindowsにはBMP用のネイティブコーデックがありますが、他のOSやアプリでの対応状況は異なります。
  • 極めてシンプルなデコード複雑性により、組み込みマイクロコントローラーやグラフィックスプログラミング教育に最適。

技術的な制限とデメリット

  • DEFLATEやハフマン符号化のような現代のエントロピー圧縮がないため、ファイルサイズが非常に巨大になる。
  • ウェブ転送やモバイルネットワーク配信には非効率。
  • ボトムアップ方式のスキャンライン順序のため、現代のトップダウン式グラフィックスパイプラインでは垂直方向の行反転が必要。

興味深い技術トリビア

  • BMPは、OS/2で使用されている数学的デカルト座標系のため、デフォルトで画像の走査線を上下逆(下から上)に格納します。
  • BMPヘッダーの高さ値に負数を設定すると、画像は正立(上から下)でデコードされます。
  • BMPファイルのすべてのスキャンラインは、4バイトの倍数(32ビット境界アライメント)になるようにゼロパディングする必要があります。

よくある技術的な質問

BMP ファイルのサイズが非常に大きいのはなぜですか?

BMP ファイルは、すべてのピクセルに対して未圧縮の生の色値を格納するためです。一方、PNG などのフォーマットは、画質を一切落とさずにデータを圧縮します。

BMP は透明度をサポートしていますか?

はい。32 ビット BMP ファイル(BITMAPV3HEADER 以降を使用)は 8 ビットのアルファチャンネルを格納できますが、古いソフトウェアではサポート状況が異なる場合があります。

BMP ファイルのサイズを小さくするにはどうすればよいですか?

BMPファイルをPNGに変換すると、ピクセル値を保ったままファイルサイズを縮小できる場合がありますが、結果は画像内容とBMPのエンコード方式によって異なります。