비트맵 헤더 형식

비트맵에는 다음과 같은 네 가지 기본 헤더 형식이 있습니다.

네 가지 유형의 비트맵 헤더는 각 구조체에서 첫 번째 DWORD인 Size 멤버로 구분됩니다.

BITMAPV5HEADER 구조체는 확장된 BITMAPINFOHEADER 구조체인 확장BITMAPV4HEADER 구조체입니다. 그러나 BITMAPINFOHEADER BITMAPCOREHEADER에는 다른 비트맵 헤더 구조와 공통적으로 Size 멤버만 있습니다.

BITMAPCOREHEADERBITMAPV4HEADER 형식은 각각 BITMAPINFOHEADER BITMAPV5HEADER 형식으로 대체되었습니다. BITMAPCOREHEADERBITMAPV4HEADER 형식은 완전성과 이전 버전과의 호환성을 위해 제공됩니다.

DIB의 형식은 다음과 같습니다(자세한 내용은 Bitmap Storage 참조).

색 표에서는 픽셀 값이 RGB 색 값에 해당하는 방법을 설명합니다. RGB는 빛을 내보내서 생성되는 색을 설명하는 모델입니다.

프로필 데이터는 프로필 파일 이름(연결된 프로필) 또는 실제 프로필 비트(포함된 프로필)를 나타냅니다. 파일 형식은 프로필 데이터를 파일의 끝에 배치합니다. 프로필 데이터는 색 테이블 바로 뒤(있는 경우) 배치됩니다. 그러나 함수가 압축된 DIB를 수신하는 경우 프로필 데이터는 파일 형식과 같이 비트맵 비트 뒤를 옵니다.

프로필 데이터는 bV5CSType이 PROFILE_LINKED 또는 PROFILE_EMBEDDED BITMAPV5HEADER 구조에만 존재 합니다. 압축된 DIB를 수신하는 함수의 경우 프로필 데이터는 비트맵 데이터 뒤를 옵니다.

palettized 디바이스는 색상표를 사용하여 색을 할당하는 모든 디바이스입니다. palettized 디바이스의 전형적인 예는 8비트 색 깊이(즉, 256색)로 실행되는 디스플레이입니다. 이 모드의 디스플레이는 작은 색 테이블을 사용하여 비트맵에 색을 할당합니다. 비트맵의 색은 디바이스에서 사용 중인 색상표에서 가장 가까운 색에 할당됩니다. palettized 디바이스는 비트맵을 표시하기 위한 최적의 팔레트를 만들지 않습니다. 단순히 현재 색상표에 있는 모든 것을 사용합니다. 애플리케이션은 팔레트를 만들고 시스템에 선택할 책임이 있습니다. 일반적으로 16비트, 24비트 및 bpp(픽셀당 32비트) 비트맵에는 색 테이블(비트맵에 대한 최적의 색상표라고도 함)이 포함되지 않습니다. 애플리케이션은 이 경우 최적의 팔레트를 생성합니다. 그러나 16-, 24 및 32-bpp 비트맵은 palettized 디바이스에 표시하기 위한 최적의 색 테이블을 포함할 수 있습니다. 이 경우 애플리케이션은 비트맵 파일에 있는 색 테이블을 기반으로 색상표를 만들어야 합니다.

1, 4 또는 8 bpp인 비트맵에는 bpp에 따라 최대 크기의 색 테이블이 있어야 합니다. 1, 4 및 8 bpp 비트맵의 최대 크기는 bpp의 힘에 대한 2입니다. 따라서 1 bpp 비트맵에는 최대 2개의 색이 있고, 4 bpp 비트맵은 최대 16가지 색을 가지며, 8 bpp 비트맵에는 최대 256개의 색이 있습니다.

16, 24 또는 32-bpp인 비트맵에는 색 테이블이 필요하지 않지만 palettized 디바이스에 색을 지정하도록 할 수 있습니다. 16, 24 또는 32-bpp 비트맵 에 대한 색 테이블이 있는 경우 biClrUsed 멤버는 색 테이블의 크기를 지정하고 색 표에는 많은 색이 있어야 합니다. biClrUsed가 0이면 색 테이블이 없습니다.

BI_BITFIELD 비트맵에 대한 빨간색, 녹색 및 파란색 비트 필드 마스크는 BITMAPINFOHEADER, BITMAPV4HEADER 및 BITMAPV5HEADER 구조체 바로 뒤를 따릅니다. BITMAPV4HEADERBITMAPV5HEADER 구조체에는 다음과 같이 빨간색, 녹색 및 파란색 마스크에 대한 추가 멤버가 포함됩니다.

멤버 의미
RedMask 압축 멤버가 BI_BITFIELDS 설정된 경우에만 유효한 각 픽셀의 빨간색 구성 요소를 지정하는 색 마스크입니다.
GreenMask 압축 멤버가 BI_BITFIELDS 설정된 경우에만 유효한 각 픽셀의 녹색 구성 요소를 지정하는 색 마스크입니다.
BlueMask 압축 멤버가 BI_BITFIELDS 설정된 경우에만 유효한 각 픽셀의 파란색 구성 요소를 지정하는 색 마스크입니다.

 

BITMAPINFOHEADERbiCompression 멤버가 BI_BITFIELDS 설정되고 함수가 LPBITMAPINFO 형식의 인수를 받으면 색 마스크가 헤더 바로 뒤에 옵니다. 색 테이블이 있는 경우 색 마스크를 따릅니다. BITMAPCOREHEADER 비트맵은 색 마스크를 지원하지 않습니다.

기본적으로 비트맵 데이터는 해당 형식으로 상향식입니다. 상향식은 비트맵 데이터의 첫 번째 검색 줄이 표시할 마지막 검사 줄임을 의미합니다. 예를 들어 10픽셀 x 10픽셀 비트맵의 비트맵 데이터에서 0번째 검색 줄의 0번째 픽셀은 표시되거나 인쇄된 이미지의 9번째 스캔 줄 중 0번째 픽셀이 됩니다. RLE(Run-length encoded) 형식 비트맵 및 BITMAPCOREHEADER 비트맵은 하향식 비트맵일 수 없습니다. 검색 줄은 RLE 압축 비트맵을 제외하고 DWORD 정렬됩니다. RLE 압축 비트맵을 제외하고 4로 균등하게 나눌 수 없는 스캔 선 너비(바이트)를 패딩해야 합니다. 예를 들어 10 x 10픽셀 24bpp 비트맵은 각 검사 줄의 끝에 2개의 패딩 바이트를 갖습니다.