본문 바로가기
프로그래밍/언어_스크립트

윈도에서 jpeg/png 이미지 다루기 3 - DDB/ DIB 포맷의 사용

by 써드아이 2008. 2. 6.
윈도에서 화면에 무었인가 뿌린다는 것은 결국은 비트맵을 뿌리는것 일게다.
윈도에서 처리하는 비트맵에는 DDB (Device Dependent Bitmap)와
DIB (Device Independent Bitmap) 두가지가 있는데 두 타입의 차이점은
다른 도큐먼트를 참조하고...

일단 LoadImage(), LoadBitmap() 함수의 리턴 타입인 HANDLE, HBITMAP은
DDB로 이미지를 처리한다.

DDB의 경우 CreateCompatibleBItmap(), SelectObject(), BitBlt() or StretchBlt()
등의 함수를 사용하여 출력하고

DIB의 경우 이미지를 파싱하여 이미지의 크기, 비트맵 데이타, 비트맵 헤더
(BITMAPINFO 구조체)등을 가지고 StretchDIBits() 함수를 사용하여 출력 한다.


자 그럼 thumbnail 이미지를 만드는걸 생각해보자..

bmp 파일의 경우는 LoadImage(), LoadBitmap() 함수로 읽어서 GetOject() 함수를
사용하면 이미지의 정보를 알 수 있다. 이걸 가지고 StretchBlts() 함수를 사용하여
출력 이미지의 크기를 조정하면 된다.

그렇다면 jpeg이나 png, gif 파일의 경우는???

우선 read() 류의 함수를 사용하여 이미지 파일을 읽은 후 이미지의 헤더를 파싱하여
이미지의 크기, 비트 데이타, DIB 정보 (BITMAPINFO 구조체)를 만들어 내어
StretchDiIBits() 함수로 출력하면 될 듯 하다.

각 jpeg, png, gif 포맷을 파싱하는게 관건일 듯..