① 파일 크기를 고려하지 않을 경우: BMP
② 파일 크기를 고려해야 하는 경우: PNG, TIF
③ 파일 크기를 고려해야 하며, 픽셀 값이 조금 변해도 괜찮은 경우: JPG
비트들의 집합 → 픽셀의 집합
영상의 전체 크기에 해당하는 픽셀 정보를 그대로 저장
용도: 사진, 포토샵
종류
비트맵 파일 헤더: 비트맵 파일에 대한 정보
typedef struct tagBITMAPFILEHEADER {
WORD bfType; // 16진수: 0x42(B), 0x4D(M)
DWORD bfSize; // BMP 파일 크기
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits; // 비트맵 비트까지의 오프셋
} tagBITMAPFILEHEADER;
bfType
: 이 파일이 BMP 파일인지 아닌지 나타내는 2byte 크기의 지시자bfOffBits
: BMP 파일 헤더로부터 픽셀 데이터가 있는 위치까지의 거리비트맵 정보 헤더: 비트맵 영상에 대한 정보
// 비트맵 정보 헤더
typedef struct tagBITMAPINFOHEADER {
DWORD biSize; // BITMAPINFOHEADER 크기
LONG biWidth; // 비트맵 가로 크기, 4byte
LONG biHeight; // 비트맵 세로 크기
WORD biPlanes; // 항상 1
WORD biBitCount; // 픽셀당 비트 수
DWORD biCompression; // BI_RGB
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
biBitCount
: 한 픽셀의 컬러를 표현하기 위해서 사용되는 비트 수. 트루컬러 영상은 24, 그레이스케일은 8색상 테이블/팔레트
typedef struct tagRGBQUAD {
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
} RGBQUAD;
픽셀 데이터
📙강의 - 강사 황선규