プログラミング/BMPファイル仕様 の変更点


Windowsの標準画像ファイル形式であるBMPファイルのバイナリ構造に関する情報。

#contents

*概要 [#about]

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

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

*内容一覧 [#list]

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

*文書中の用語解説 [#word]

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

*参考文献 [#reference]

:MSDNライブラリ([[日本語>http://msdn.microsoft.com/ja-jp/library/]]・[[英語>http://msdn.microsoft.com/en-us/library/]])|
--[[バイナリ構造>./バイナリ構造]]のページの各種構造体について参考にしました。
:[[PNG (Portable Network Graphics) Specification>http://www.sutv.zaq.ne.jp/linuz/tks/PngSpec1.2/PNG-Contents.html]]|
:[[PNG (Portable Network Graphics) Specification>http://web.archive.org/web/20050624081635/http://tech.millto.net/~pngnews/kndh/PngSpec1.2/PNGcontents.html]]|
--[[バイナリ構造>./バイナリ構造]]のページの[[情報ヘッダ>./バイナリ構造#info-header-v5]]セクションの[[sRGB色空間タイプ>./バイナリ構造#info-header-v5-srgb]]の解説において参考にしました。
--[[ビットフィールド>./ビットフィールド]]のページの[[色成分値のビット数変換>./ビットフィールド#bits2bits]]セクションの[[ビットシフト演算による近似>./ビットフィールド#bits2bits-shift]]において引用しました。