プログラミング/BMPファイル仕様 のバックアップ(No.4)


Windowsの標準画像ファイル形式であるBMPファイルのバイナリ構造に関する情報。
このページには http://www.ruche-home.net/program/bmp でアクセスできます。

概要

このコンテンツは、Windowsの標準画像ファイル形式であるBMPファイルのバイナリ構造について、筆者自身の知識や参考文献等を基にまとめたものである。
あいまいな部分等に筆者個人の解釈を含む場合があり、それが正当な解釈である保証はないため、この文書全体の正当性は保証されない。

文書中において出てくる固有名詞(例えば「COREタイプ」等)は、特に出所が明記されていない限りは筆者が説明の便宜上付けたものであり、正式な名称ではないことに注意すること。

内容一覧

バイナリ構造
BMPファイルのバイナリ構造を解説します。
ビットフィールド
16ビット及び32ビットのBMPファイルで使われるビットフィールドについて解説します。
RLEによる圧縮
4ビット及び8ビットのBMPファイルで利用可能な圧縮方式であるRLEについて解説します。

文書中の用語解説

BMP
単に「ビットマップ(BitMaP)」を略したものである。
NビットBMP
Nには各情報ヘッダにおいてピクセル毎のビット数が取りうる値が入り、この値が入ったBMPのことを区別する際にこう呼ぶ。
例えば「24ビットBMP」など。
ただし、値が 0 であっても「0ビットBMP」とは呼ばない。
エンコーダ
BMPファイルを書き出すソフトウェア全般を指す。
デコーダ
BMPファイルを読み込むソフトウェア全般を指す。
厳密でないエンコーダ
BMPファイルの仕様上の最低基準のみを満たした書き出しを行うエンコーダを指す。
厳密でないデコーダ
BMPファイルの仕様を満たしていなくとも、読み込み可能と思われるならば読み込むデコーダを指す。
0xN
Nには0から9の数字またはAからFの文字の羅列が入り、16進数表現のNであることを示す。
例えば 0x00007C00 は16進数表現の7C00(10進数表現では31744)を表す。
主に、実際のソースコード記述でも16進数表現を用いるのが妥当と思われる説明箇所においてこの表記方法を用いる。

参考文献

MSDNライブラリ(日本語英語
バイナリ構造のページの各種構造体について参考にしました。
PNG (Portable Network Graphics) Specification
バイナリ構造のページの情報ヘッダセクションのsRGB色空間タイプの解説において参考にしました。