Windows bitmap

BMPファイル形式の詳細解説



BMPファイル形式、正式にはWindows BitmapまたはDevice Independent Bitmap (DIB) は、マイクロソフトIBMが共同開発していたOS時代から存在する画像ファイル形式です。Windowsの標準画像形式として広く使用されており、その歴史は長く、ファイル形式自体も幾度かの変更を経ています。そのため、WindowsとOS/2では細かな差異が存在するケースもあります。

BMPファイルの構造



BMPファイルは、大きく分けて以下のブロックで構成されています。

1. ファイルヘッダ: ファイル全体に関する基本的な情報(ファイルサイズ、データの開始位置など)が格納されています。
2. 情報ヘッダ: 画像データの詳細(幅、高さ、色数、圧縮方法など)が格納されています。このヘッダーはバージョンによってサイズや含まれる情報が異なり、BITMAPINFOHEADER、BITMAPV3INFOHEADER、BITMAPV4HEADER、BITMAPV5HEADERなどがあります。OS/2用のBITMAPCOREHEADERも存在します。
3. カラーマスク (場合によっては): ビットフィールド形式のビットマップで使用され、各色成分(、α)を抽出するために必要な情報が格納されます。
4. カラーパレット (場合によっては): インデックスカラービットマップの場合、各インデックス番号に対応する色が格納されます。ダイレクトカラービットマップでは、減色時に優先される色が格納されることがあります。
5. ビットマップデータ: 実際の画像データがピクセルごとに格納されています。通常はボトムアップ形式(下から上)で記録されますが、トップダウン形式(上から下)もサポートしています。ただし、トップダウン形式では圧縮ができません。
6. カラープロファイル (場合によっては): ICCプロファイルデータ、またはそのファイルパスが格納されます。

ヘッダー情報の詳細



情報ヘッダーは、画像の幅、高さ、色深度、圧縮方法などの重要な情報を保持しています。特に、ヘッダーのバージョンによって含まれる情報やサイズが大きく異なるため注意が必要です。 例えば、`BITMAPINFOHEADER` はWindowsで広く使用されている基本的なヘッダーですが、`BITMAPV4HEADER` や `BITMAPV5HEADER` はより高度な情報を扱うことができます。OS/2環境では、`BITMAPCOREHEADER` や `BITMAPINFOHEADER2` が使用されます。

これらのヘッダーには、画像の解像度、圧縮方法、色空間の情報などが含まれており、アプリケーションはこれらの情報に基づいて画像を正しく表示または処理することができます。圧縮方法は、BI_RGB(非圧縮)、BI_RLE8(8ビットRLE圧縮)、BI_RLE44ビットRLE圧縮)、BI_BITFIELDS(ビットフィールド圧縮)などがあります。

カラーパレットとビットマップデータ



カラーパレットは、インデックスカラービットマップで使用される色の定義を保持しています。各ピクセルは、カラーパレット内のインデックス番号で表現されます。一方、ダイレクトカラービットマップでは、各ピクセルが直接RGB値で表現されます。

ビットマップデータは、画像ピクセルデータを格納する部分です。ピクセルデータは、通常は左下から右上に、行ごとに格納されます。各ピクセルのデータサイズは、色深度によって異なります。また、水平方向のバイト数が4の倍数でない場合は、0x00でパディングされます。

BMPファイルを取り扱うライブラリ



BMPファイルの読み書きや操作を容易にするためのライブラリが数多く存在します。代表的なものとしては、Windows API、MFC、ATL、GDI+、WIC、.NET FrameworkのSystem.Drawing、System.Windows.Media.Imagingなどがあります。また、オープンソースのライブラリもいくつか公開されています。これらのライブラリを利用することで、開発者はBMPファイルの処理を効率的に行うことができます。

まとめ



BMPファイル形式は、シンプルながらも多様な機能を持つ画像ファイル形式です。歴史的経緯から異なるバージョンが存在し、OS/2とWindowsでの違いにも注意が必要です。様々なプログラミング環境やライブラリがBMPファイルをサポートしており、画像処理アプリケーション開発において重要な役割を果たしています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。