Bitmapファイルフォーマット

トップページ >> 各種ファイルフォーマット >>
完成:2002/11/27

BitmapはWindowsでの標準的な画像フォーマットです。
Bitmapフォーマットは、DIB(Device Independent Bitmap)にヘッダを付けた形式になっていて、ヘッダの種類によって、Windows、OS/2の2種類に分けられます。

Bitmapファイルの大まかな構造は次のようになります。

Windows OS/2
ファイルヘッダ
(Bitmap File Header)
BITMAPFILEHEADER (Windows,OS/2共通)
情報ヘッダ
(Bitmap Information Header)
BITMAPINFOHEADER BITMAPCOREHEADER
パレットデータ
(Palette Data)
<存在しない場合もある>
RGBQUAD GBTRIPLE
画像データ (Windows,OS/2共通)

構造のそれぞれについて、以下で解説します。


ファイルヘッダ (Bitmap File Header)

ファイルヘッダ [BITMAPFILEHEADER] -Windows,OS/2共通
[0] bfType 2byte unsigned int ファイルタイプ 'BM'
[2] bfSize 4byte unsigned long ファイルサイズ[byte]
[6] bfReserved1 2byte unsigned int 予約領域1 常に0
[8] bfReserved2 2byte unsigned int 予約領域2 常に0
[10] bfOffBits 4byte unsigned long ファイル先頭から画像データまでのオフセット[byte]

情報ヘッダ (Bitmap Information Header)

情報ヘッダ [BITMAPINFOHEADER] -Windows
[14] biSize 4byte unsigned long 情報ヘッダサイズ[byte] 40
[18] biWidth 4byte long 画像の幅[ピクセル]
[22] biHeight 4byte long 画像の高さ[ピクセル]
[26] biPlanes 2byte unsigned int プレーン数 常に1
[28] biBitCount 2byte unsigned int 色ビット数[bit] 1,4,8,(16),24,32
[30] biCompression 4byte unsigned long 圧縮形式 0,1,2,3
[34] biSizeImage 4byte unsigned long 画像データサイズ[byte]
[38] biXPixPerMeter 4byte long 水平解像度[dot/m] 0の場合もある
[42] biYPixPerMeter 4byte long 垂直解像度[dot/m] 0の場合もある
[46] biClrUsed 4byte unsigned long 格納パレット数[使用色数] 0の場合もある
[50] biCirImportant 4byte unsigned long 重要色数 0の場合もある
情報ヘッダ [BITMAPCOREHEADER] -OS/2
[14] bcSize 4byte unsigned long 情報ヘッダサイズ[byte] 12
[18] bcWidth 2byte int 画像の幅[ピクセル]
[20] bcHeight 2byte int 画像の高さ[ピクセル]
[22] bcPlanes 2byte unsigned int プレーン数 常に1
[24] bcBitCount 2byte unsigned int 色ビット数[bit] 1,4,8,(16),24,32

パレットデータ (Palette Data)

パレットデータ [RGBQUAD] -Windows
rgbBlue 1byte unsigned char 0〜255
rgbGreen 1byte unsigned char 0〜255
rgbRed 1byte unsigned char 0〜255
rgbReserved 1byte unsigned char 予約領域 常に0
パレットデータ [RGBTRIPLE] -OS/2
rgbBlue 1byte unsigned char 0〜255
rgbGreen 1byte unsigned char 0〜255
rgbRed 1byte unsigned char 0〜255

画像データ

圧縮形式

BI_RLE8(Run-Length-Encoded 8bits/pixel)

動作概要
第1バイト 第2バイト 意味
0x01〜0xFF 0x00〜0xFF コード化モード
0x00 0x03〜0xFF 絶対モード
0x00 0x02 データのオフセット
0x00 0x01 イメージの終端
0x00 0x00 行の終端
コード化モード
第1バイト:連続する数(1〜255)
第2バイト:カラーインデックスコード
絶対モード
第1バイト:'0'
第2バイト:連続しないデータの数(3〜255)
第3バイト以降:カラーインデックスコード
データのオフセット
第1バイト:'0'
第2バイト:'2'
第3バイト:水平移動値(-128〜127)
第4バイト:垂直移動値(-128〜127)
イメージの終端・行の終端
第1バイト:'0'
第2バイト:'0'or'1'

BI_RLE4(Run-Length-Encoded 4bits/pixel)

Bitfields

administrated by umekkii -> admin@umekkii.jp