3.2.4 색상 테이블(팔레트)
256개 이하의 색상을 사용하는 비트맵은 BITMAPINFOHEADER 뒤에 RQBQUAD 구조체의 배열로 구성된 색상 테이블color table이 존재한다. 색상 테이블은 비트맵에서 사용되는 색상 정보를 담고 있는 영역으로 팔레트palette라고도 한다. RGBQUAD 구조체는 다음과 같은 형태로 정의되어 있다.
typedef struct tagRGBQUAD { BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; } RGBQUAD;
BYTE는 unsigned char와 동일한 자료형으로써, 1바이트의 크기를 갖는다. 그러므로 RGBQUAD 구조체의 크기는 4바이트이다. 멤버 이름을 보면 쉽게 알 수 있듯이, rgbBlue는 파란색, rgbGreen은 녹색, rgbRed는 빨간색 색상 정보를 표현한다. 마지막 1바이트 rgbReserved는 사용하지 않고 있으며, 항상 0으로 표현한다. 구조체의 이름은 RGBQUAD이지만 실제 색상이 저장되는 순서는 RGB 순서가 아니라 BGR 순서인 것을 명심해야 한다.
그레이스케일 비트맵 파일은 256개의 RGBQUAD 배열이 존재하며, 각각의 원소에는 rgbBlue, rgbGreen, rgbRed 값이 동일한 값으로 설정되어 있다. 그레이스케일 비트맵 파일에서 팔레트는 검정색에 해당하는 (0, 0, 0, 0)부터 시작하여 흰색에 해당하는 (255, 255, 255, 0)까지 차례대로 밝기 값이 증가하도록 설정되어 있다. 즉, 그레이스케일 BMP 파일은 회색조의 고정된 형태의 색상 테이블을 가지는 256 색상 BMP 파일의 특별한 형태라고 말할 수 있다.
트루컬러 비트맵 파일은 팔레트가 존재하지 않는다. 트루컬러 영상에서 표현 가능한 색상 수가 224=16,777,216이기 때문에 팔레트를 만드는 것 자체가 BMP 파일 용량에 무리를 줄 수 있기 때문이다.