<>メモ

2026 ワード

ビットマップファイルは、ファイルヘッダ+ビットマップ情報+ビットマップピクセルデータの3つの部分から構成されています.
ビットマップファイルヘッダ.ビットマップファイルヘッダは、主にビットマップファイルを識別するために使用されます.以下は、ビットマップファイルヘッダ構造の定義です.
typedef struct tagBITMAPFILEHEADER { // bmfh 
    WORD    bfType; 
    DWORD   bfSize; 
    WORD    bfReserved1; 
    WORD    bfReserved2; 
    DWORD   bfOffBits; 
} BITMAPFILEHEADER;

このbfTypeの値は「BM」(0 x 4 d 42)であり、ビットマップファイルであることを示す.bfSizeの値はビットマップファイルのサイズです.
ビットマップ情報に記録された値は、メモリの割り当て、パレット情報の設定、画素値の読み出しなどに用いられる.以下は、ビットマップ情報構造の定義です.
 
typedef struct tagBITMAPINFO {
    BITMAPINFOHEADER    bmiHeader;
    RGBQUAD             bmiColors[1];
} BITMAPINFO;

可視ビットマップ情報も、ビットマップ情報ヘッダ+カラーテーブルの2つの部分から構成されています.
カラーテーブルはカラーテーブル項目からなり、カラーテーブル項目構造の定義は以下の通りである:
typedef struct tagRGBQUAD { // rgbq 
    BYTE    rgbBlue; 
    BYTE    rgbGreen; 
    BYTE    rgbRed; 
    BYTE    rgbReserved; 
} RGBQUAD;
ここで注意すべき問題は、RGBQUAD構造における色順序が通常のRGBではなくBGRであることである.
ビットマップ情報ヘッダは、単一画素で使用されるバイト数と、色を記述するフォーマットとを含み、ビットマップの幅、高さ、ターゲットデバイスのビット平面数、画像の圧縮フォーマットも含む.以下は、ビットマップ情報ヘッダ構造の定義です.
typedef struct tagBITMAPINFOHEADER{ // bmih 
    DWORD  biSize; 
    LONG   biWidth; 
    LONG   biHeight; 
    WORD   biPlanes; 
    WORD   biBitCount 
    DWORD  biCompression; 
    DWORD  biSizeImage; 
    LONG   biXPelsPerMeter; 
    LONG   biYPelsPerMeter; 
    DWORD  biClrUsed; 
    DWORD  biClrImportant; 
} BITMAPINFOHEADER;

次の表は、構造体の各メンバーの説明です.
構造メンバー
説明
biSize
構造BITMAPINFOHEADERのバイト数、すなわちsizeof(BITMAPINFOHEADER)*
biWidth
ピクセル単位の画像幅*
biHeight
ピクセル単位の画像長*
biplanes
ターゲットデバイスのビットプレーン数
biBitCount
各ピクセルのビット数*(1)
biCompression
画像の圧縮フォーマット(この値はほぼ常に0)
biSizeImage
バイト単位の画像データのサイズ(BI_RGB圧縮方式)
biXPelsPermeter
水平方向の1メートルあたりの画素数
biYpelsPerMeter
垂直方向の1メートルあたりのピクセル数
biClrused
パレットで実際に使用されている色の数(2)
biClrImportant
現実ビットマップに必要な色数(3)
説明:*は、ビットマップ操作でよく参照される変数であるため、注意が必要な部分です.