|
#include <iostream> |
#include <iostream> |
WIN API
1. FILE HEADER - 파일에 대한 정보 가짐
BITMAPFILEHEADER 구조체
2. INFORMATION HEADER 실제 비트맵에 대한 세부 정보 가짐
BITMAPINFOHEADER 구조체
3. PALETTE 각 픽셀이 가지고 있는 값에 대한 실제 RGB값 저장
RGBQUAD 구조체 비트맵이 256개 이하 색상일 경우만 해당(트루컬러 비트맵인 경우 PALETTE가 없음)
4. DATA 각 픽셀의 색상값 저장되어 있음
1. BITMAPFILEHEADER 구조체
비타맵 파일에 대한 정보(파일헤드)
typedef struct tagBITMAPFILEHEADER { // 14 = 2+4+2+2+4 (byte)
WORD bfType; // "BM"이라는 글자가 설정됨
DWORD bfSize; // 비트맵 파일의 전체 크기
WORD bfReserved1; // 예약변수(0으로 설정함)
WORD bfReserved2; // 예약변수(0으로 설정함)
DWORD bfOffBits; // 파일에서 비트맵 데이터가 있는 위치
} BITMAPFILEHEADER;
파일의 형태를 지정하는 매직 넘버이며 비트맵인 경우 반드시 BM이어야 함. (0x42, 0x4d)
비트맵파일인지 아닌지를 확인하는 변수가 bfType 이다.
BMP파일의 첫 두 바이트는 항상 "BM" 문자가 저장된다.
bfOffBits 는 파일 시작부분에서 실제 영상데이터가 존재하는 위치까지 바이트 단위의
거리를 나타낸다.
WORD 는 unsigned short, DWORD 는 unsigned long 으로 정의되어 있다
2. BITMAPINFOHEADER 구조체
비트맵 영상에 대한 크기, 흑백, 칼러정보, 팔레트 크기 정보등을 저장하기 위한 구조체 변수이다
typedef struct tagBITMAPINFOHEADER { // 40 = 4+4+4+2+2+4+4+4+4+4+4 (byte)
DWORD biSize; // 구조체의 크기
LONG biWidth; // 비트맵의 가로 크기
LONG biHeight; // 비트맵의 세로 크기
WORD biPlanes; // Plane수(1로 설정함)
WORD biBitCount; // 한 픽셀당 비트수
DWORD biCompression; // 압축 유무 플래그
DWORD biSizeImage; // 그림 데이터의 크기
LONG biXPelsPerMeter; // 한 픽셀당 가로 미터
LONG biYPelsPerMeter; // 한 픽셀당 세로 미터
DWORD biClrUsed; // 그림에서 실제 사용되는 컬러 수
DWORD biClrImportant; // 중요하게 사용되는 컬러
} BITMAPINFOHEADER;
중요한 정보는 영상파일의 크기를 나타내는 변수 biHeight, biWidth 와 흑백과 칼라여부를
나타내는 biBitCount, 팔레트 크기를 나타내는 biClrUsed 등이다
biBitCount 가 8이면 흑백영상이거나 2^8 = 256 칼라의 영상이다
24라면 트루칼라, 16이면 2^16 개의 칼라를 사용하는 영상이다
'코스웨어 > 10년 시스템제어' 카테고리의 다른 글
네트워크 프로젝트 (0) | 2010.06.03 |
---|---|
시스템제어 [15번] 신관식 (0) | 2010.06.01 |
[시스템제어]0531_보고서 (14번 선동환) (0) | 2010.05.31 |
시스템제어 보고서 12번 박철민 (0) | 2010.05.27 |
시스템제어 5월 25일 일일보고서 10번 문현철 (0) | 2010.05.25 |
[일일보고서] 5월24일(월) - 9번 노현용 (0) | 2010.05.25 |
아트메가 프로젝트 (0) | 2010.05.21 |
일일 보고서 (8번 남민호) (0) | 2010.05.20 |