Windows Bitmap | OS/2 Bitmap | |
ファイルヘッダ | BITMAPFILEHEADER (14bytes) | |
情報ヘッダ | BITMAPINFOHEADER (40bytes) + カラーパレット (無い場合もある) |
BITMAPCOREHEADER (12bytes) + カラーパレット (無い場合もある) |
画像データ | 可変長 |
アドレス (サイズ) | 名称 | 内容 |
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つの色を表現している。
サイズ | Windows | OS/2 | 内容 |
RGBQUAD (4) | RGBTRIPLE (3) | ||
1 | rgbBlue | rgbBlue | 青 0 〜 255 |
1 | rgbGreen | rgbGreen | 緑 0 〜 255 |
1 | rgbRed | rgbRed | 赤 0 〜 255 |
1 | rgbReserved | - | 予約領域 0 |
パレット数は、biClrUsed で判断するのかな? とりあえず、biClrUsedが 0 の場合は、1 << biBitCount = パレット数 と解釈するらしい。
・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・ 9 | 10 | 12 | 13 ・・・・・・・・・・ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
( 0,99) (99,99) (100,99) ↑---------->| 0 | ↑---------->| 0 | ↑---------->| 0 | ↑---------->| 0 | ↑---------->| 0 | ( 0, 0) (99, 0) (100, 0)
使用できる色数 | 1画素あたりの使用量 | 1画素あたりの内容 | |
1 bit Bitmap | 2色 | 1 bit | パレット番号を記入 |
4 bit Bitmap | 16色 | 4 bit | 〃 |
8 bit Bitmap | 256色 | 8 bit (1 byte) | 〃 |
24 bit Bitmap | 1677万色 | 24 bit (3 byte) | RGBカラー情報を記入 |
32 bit Bitmap | 1677万色 | 32 bit (4 byte) | RGBカラー情報と 0 を記入 |