BMP ファイルフォーマット


BMP ファイル全体構造
  Windows Bitmap OS/2 Bitmap
ファイルヘッダ BITMAPFILEHEADER (14bytes)
情報ヘッダ BITMAPINFOHEADER
(40bytes)

カラーパレット
(無い場合もある)
BITMAPCOREHEADER
(12bytes)

カラーパレット
(無い場合もある)
画像データ 可変長


ファイルヘッダ [BITMAPFILEHEADER]

アドレス (サイズ)名称内容
0x0000 (2)bfType ファイルタイプ 通常は'BM'
0x0002 (4)bfSize ファイルサイズ (byte)
0x0006 (2)bfReserved1 予約領域 常に 0
0x0008 (2)bfReserved2 予約領域 常に 0
0x000A (4)bfOffBits ファイル先頭から画像データまでのオフセット (byte)


情報ヘッダ

Windows Bitmap [BITMAPINFOHEADER]
OS/2 Bitmap [BITMAPCOREHEADER]

アドレス (サイズ)名称内容
Windows OS/2
0x000E (4) 0x000E (4) bcSize ヘッダサイズ
40 - Windows Bitmap
12 - OS/2 Bitmap
0x0012 (4) 0x0012 (2) bcWidth 画像の幅 (ピクセル)
0x0016 (4) 0x0014 (2) bcHeight 画像の高さ (ピクセル)
bcHeight の値が正数なら,画像データは下から上へ
bcHeight の値が負数なら,画像データは上から下へ
0x001A (2) 0x0016 (2) bcPlanes プレーン数 常に 1
0x001C (2) 0x0018 (2) bcBitCount 1画素あたりのデータサイズ (bit)
例)256 色ビットマップ = 8
001E (4) - biCompression 圧縮形式
0 - BI_RGB (無圧縮)
1 - BI_RLE8 (RunLength 8 bits/pixel)
2 - BI_RLE4 (RunLength 4 bits/pixel)
3 - BI_BITFIELDS (Bitfields)
(4 - BI_JPEG)
(5 - BI_PNG)
0x0022 (4) - biSizeImage 画像データ部のサイズ (byte)
96dpi ならば3780
0 の場合もある
※biCompression が 0 以外の場合、 ここの値を 0 にすることは出来ない
0x0026 (4) - biXPixPerMeter 横方向解像度 (1mあたりの画素数)
96dpi ならば3780
0 の場合もある
0x002A (4) - biYPixPerMeter 縦方向解像度 (1mあたりの画素数)
96dpi ならば3780
0 の場合もある
0x002E (4) - biClrUsed 格納されているパレット数 (使用色数)
0 の場合もある
0x0032 (4) - biCirImportant 重要なパレットのインデックス
0 の場合もある


カラーパレット

bcBitCount の値が 8〜1 の場合に存在する。
OS/2 Bitmap は,[ 3 byte ]、 Windows Bitmap は,[ 4 byte ] で1つの色を表現している。

1パレットあたりの構造
サイズWindowsOS/2内容
RGBQUAD (4)RGBTRIPLE (3)
1rgbBluergbBlue青 0 〜 255
1rgbGreenrgbGreen緑 0 〜 255
1rgbRedrgbRed赤 0 〜 255
1rgbReserved-予約領域 0

パレット数は、biClrUsed で判断するのかな? とりあえず、biClrUsedが 0 の場合は、1 << biBitCount = パレット数 と解釈するらしい。


画像データ

BMP フォーマットの記録方式の特徴

 使用できる色数1画素あたりの使用量1画素あたりの内容
1 bit Bitmap2色1 bitパレット番号を記入
4 bit Bitmap16色4 bit
8 bit Bitmap256色8 bit (1 byte)
24 bit Bitmap1677万色24 bit (3 byte)RGBカラー情報を記入
32 bit Bitmap1677万色32 bit (4 byte)RGBカラー情報と 0 を記入


ダウンロード

BMPファイルのサンプル - s_bmp.zip (480KB)
いろんな形式のBMPファイルのパックです。BMPの解析にどうぞ。
[内容] OS/2 Bitmap、Windows Bitmap、1〜24bit(32bit)、圧縮されたBitmap 等

参考資料

近藤正芳のウェブページ
BMP ファイルフォーマット
Meteoric Stream
BMP(DIB)フォーマット解説
ルーチェ's Homepage ←詳しく分かりやすい
BMPファイル仕様

戻る