티스토리 뷰

my Programing/etc..

BITMAP 구조.

Gandawon 2008. 10. 25. 15:07

/* BITMAPFILEHEADER 구조체 */
typedef struct tagBITMAPFILEHEADER{ //bmfh
   WORD bfType;         // 파일의 형태, 0x42, 0x4d (BM) 이어야함
   DWORD bfSize;         // 비트맵 파일의 크기 (Byte단위)
   WORD bfReserved1;   // 예약. 0으로 설정  
   WORD bfReserved2;  // 예약2. 0으로설정
   DWORD bfOffBits;     // 실제 비트맵데이터까지의 오프셋값
   // 실제로는 bfOffBits = BITMAPFILEHEADER크기 + BITMAPINFOHEADER크기 + RGBQUAD 구조체배열의크기 이다. (그림을 봐야 이해할수 있을것이다)
} BITMAPFILEHEADER;

/* BITMAPINFOHEADER 구조체 */
typedef struct tagBITMAPINFOHEADER{ //bmfh
   DWORD biSize;         // 이 구조체의 크기. 구조체 버전확인할수 있다.
   LONG biWidth;        // 비트맵의 가로 픽셀수
   LONG biHeight;       // 비트맵의 세로 픽셀수
   WORD biPlanes;      // 플레인의 갯수 반드시 1이어야함
   WORD biBitCount;     // 한 픽셀이 구성되는 비트의수
   DWORD biCompression; // 압축방법. BI_RGB일땐 비압축 BI_RLE8, BI_RLE4인경우 run length encode방법으로 압축
   DWORD biSizeImage;   // 이미지의 크기. 압축이 안되어있을때는 0
   LONG biXPelsPerMeter; // 가로 해상도
   LONG biYPelsPerMeter; // 세로 해상도
   DWORD biClrUsed;  // 색상테이블을 사용하였을때 실제 사용되는 색상수
   DWORD biClrImportant; // 비트맵을 출력하는데 필수 색상수
} BITMAPINFOHEADER;

/* RGBQUAD구조체 */
typedef struct tagRGBQUAD{ //rgbq
   BYTE rgbBlue;       // Blue Value
   BYTE rgbGreen;     // Green Vlaue
   BYTE rgbRed;       // Red Value
   BYTE rgbReserved; // 실제 사용하지 않음. 0
} RGBQUAD;
댓글