DIB

2015. 7. 28. 06:17프로그래밍/ETC

728x90
728x90

※ DIB : Device Independent Bitmap ( 장치에 독립적인 비트맵 )

※ DDB : Device Dependent Bitmap ( 장치에 종속적인 비트맵 )


DIB의 구조

- DIB는 DDB보다 훨씬 복잡하며 다양한 장치에 사용하기 위해 비트맵 출력에 대한 상세 정보를 포함한다.

- 사실 DIB 내부 구조를 몰라도 단순히 사용만 하는데는 어려움이 없다. 모든 처리가 클래스 내부로 캡슐화 되어 있다.

 CBmp B("C:\\...\\imaga.jpg");

 B.Draw( hdc, 10, 10 );


-DIB 파일은 여러 개의 구조체들로 구성되어 있으며 각 구조체에는 비트맵의 특성에 대해 기술된 멤버가 들어가있다.

 BITMAPFILEHEADER 구조체

 BITMAPINFOHEADER 구조체

 RGBQUAD 구조체 배열

 비트 정보

  

BITMAPFILEHEADER ​구조체

- ​DIB 파일의 제일 선두에 있는 구조체

- 파일 형식, 크기 및 레이아웃 등 비트맵 파일 자체에 대한 정보를 포함하는 구조체

 

원형

 typedef struct tagBITMAPFILEHEADER {

WORD bfType;

DWORD bfSize;

WORD bfReserved1;

WORD bfReserved2;

DWORD bfOffBits;

}BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;

 

매개변수

bfType - The file type; must be BM. 파일의 형태를 지정하는 매직 넘버, BM 이어야만 한다.(0x42, 0x4d)

 

bfSize - The size, in bytes, of the bitmap file. 비트맵 파일의 크기 (바이트 단위)

 

bfReserved1, bfReserved2 - Reserved; must be zero.

예약, 0으로 설정, (핫스팟 저장용으로 설계되었으나 사용되지 않음)

 

bfOffBits 

- BITMAPFILEHEADER 구조체의 선두로 부터의 바이트 수(오프셋)

- 이 구조체와 실제 비트맵 데이터와의 오프셋 값을 가진다.

BITMAPFILEHEADER의 크기 + BITMAPINFOHEADER의 크기 + RGBQUAD 구조체 배열의 크기

 

BITMAPINFOHEADER

- BITMAPFILEHEADER 구조체 바로 뒤에 위치하며 DIB의 크기, 색상 포맷에 관한 정보

  그리고 기타 장치 독립성을 보장하는 몇 가지 정보들을 가지는 구조체이다.

  (윈도우즈3.0 이상에서 사용되는 장치에 독립적인 비트맵의 치수와 색상 정보를 저장한다.)

 

원형

 typedef struct tagBITMAPINFOHEADER{
      DWORD  biSize;
      DWORD  biWidth;
      DWORD  biHeight;
      WORD   biPlanes;
      WORD   biBitCount
      DWORD  biCompression;
      DWORD  biSizeImage;
      DWORD  biXPelsPerMeter;
      DWORD  biYPelsPerMeter;
      DWORD  biClrUsed;
      DWORD  biClrImportant;

   } BITMAPINFOHEADER;

 

매개변수 정보

http://www.herdsoft.com/ti/davincie/davp3xo2.htm 


RGBQUED 구조체 배열

- 비트맵에서사 용되는 색상 테이블을 정의

 typedef struct tagRGBQUAD {

BYTE rgbBlue;

BYTE rgbGreen;

BYTE rgbRed;

BYTE rgbReserved;

}RGBQUAD;



728x90
반응형