더북(TheBook)

3.2.3 비트맵 정보 헤더

BITMAPFILEHEADER 구조체 다음에는 비트맵 영상 자체에 대한 정보를 담고 있는 비트맵 정보 헤더가 나타난다. 비트맵 정보 헤더는 BITMAPINFOHEADER 구조체를 이용하여 표현되며, 여기서는 영상의 가로 크기, 세로 크기, 사용하는 색상수 등의 정보를 담고 있다. 실제 BITMAPINFOHEADER 구조체는 아래와 같이 정의되어 있다.

typedef struct tagBITMAPINFOHEADER {
    DWORD biSize;    
    LONG biWidth;
    LONG biHeight;
    WORD biPlanes;
    WORD biBitCount;
    DWORD biCompression;
    DWORD biSizeImage;
    LONG biXPelsPerMeter;
    LONG biYPelsPerMeter;
    DWORD biClrUsed;
    DWORD biClrImportant;
} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;

BITMAPINFOHEADER 구조체의 크기는 40바이트이며, 이 값은 biSize 멤버에 기록된다. BITMAPINFOHEADER 구조체의 각 멤버에 대한 설명은 표 3-2에 정리하였다.

표 3-2 BITMAPINFOHEADER 각 멤버의 의미

멤버 이름

설명

biSize

이 구조체를 저장하기 위해 필요한 바이트 수를 나타낸다. 즉, BITMAPINFOHEADER 구조체의 크기를 나타낸다. 일반적으로 40이며, 40이 아닌 경우 확장형 DIB이다.

biWidth

비트맵의 가로 크기를 픽셀 단위로 나타낸다.

biHeigh

비트맵의 세로 크기를 픽셀 단위로 나타낸다. 이 값이 양수이면 픽셀 데이터는 상하가 뒤집힌 상태(buttom-up)로 저장되며, 음수이면 정상적인 상태(top-down)로 저장된다. 일반적으로 biHeight는 양수로 저장되며, 픽셀 데이터는 상하가 뒤집힌 상태로 저장된다.

biPlane

비트맵을 화면 등에 보여줄 때 필요한 플레인 수를 나타내며, 항상 1이다.

biBitCount

픽셀 하나를 표현하기 위해 필요한 비트 수를 나타낸다. 1, 4, 8, 16, 24, 32의 값을 가질 수 있다. 이 값이 8이면 28 = 256색을 표현할 수 있고, 24이면 224 = 16,777,216색(트루컬러)을 표현할 수 있다.

biCompression

압축 유형을 나타낸다. 일반적으로 BMP 파일은 압축을 하지 않음을 나타내는 BI_RGB 값을 가진다.

biSizeImage

DIB 구조에서 픽셀 데이터를 저장하는 데 필요한 메모리 공간의 크기를 나타낸다. 만약 비트맵 영상의 가로 크기가 4의 배수가 아니면 4의 배수에 맞게 여분의 바이트가 추가되어 계산된다. biCompression이 BI_RGB인 경우, 이 값은 0의 값을 가질 수도 있다.

biXPelsPerMeter

가로 방향으로 미터당 픽셀 수를 나타낸다.

biYPelsPerMeter

세로 방향으로 미터당 픽셀 수를 나타낸다.

biClrUsed

색상 테이블에서 실제 사용되는 색상 수를 나타낸다. 이 값이 0이면, biBitCount에서 지정한 색상수를 모두 사용하는 것을 나타낸다. 0이 아니면, RGBQUAD 구조체 배열의 크기를 지정한다. 일반적으로 0이다.

biClrImportant

비트맵을 화면에 표현하기 위해 필요한 색상 인덱스의 수를 나타낸다. 0이면 모든 색상이 필요함을 나타내며, 일반적으로 0이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.