더북(TheBook)

3.3.2 트루컬러 BMP 파일의 분석

이번에는 트루컬러 영상의 BMP 파일을 분석해보자. 앞서 살펴본 그레이스케일 비트맵과 비교했을 때, 트루컬러 비트맵은 색상 테이블 정보를 가지고 있지 않기 때문에 파일의 내용을 분석하기에는 좀 더 용이한 면이 있다. 여기서는 BITMAPFILEHEADER와 BITMAPINFOHEADER 구조체 멤버 값의 차이점과 실제 픽셀 데이터가 저장되는 방식에 대해 유념하면서 파일을 분석해보자.

여기서 살펴볼 샘플 트루컬러 비트맵 영상을 그림 3-9에 나타내었다. 이 영상은 맨 윗줄부터 빨간색, 녹색, 파란색, 회색으로 구성되어 있다. 각 색상의 B, G, R, 정보를 그림 3-9 옆에 표시해두었다. 실제 파일은 예제 소스에 /images/ch03/color_4x4.bmp라는 이름으로 저장되어 있다.

그림 3-9 트루컬러 비트맵 예제 파일(color_4x4.bmp)

앞서 그레이스케일 비트맵을 분석할 때 했던 방식 그대로 Visual Studio의 바이너리 편집기로 color_4x4.bmp 파일을 열어서 그 내용을 살펴보자. 그림 3-10은 color_4x4.bmp 파일의 전체 내용을 그림으로 다시 표현한 것이다. 앞서 살펴본 gray_4x4.bmp와 달리 색상 테이블 영역이 존재하지 않기 때문에 파일 크기가 훨씬 작은 것을 확인할 수 있다.

그림 3-10 color_4x4.bmp 파일의 16진수 표시

그림 3-10에서 맨 처음 나타나는 bfType의 값은 역시 ASCII 코드 ‘Bʼ와 ‘Mʼ에 해당하는 0x42 0x4D이다. bfSize는 16진수로 0x66 값을 가지고 있는데, 이는 10진수 102에 해당하며 color_4x4.bmp 파일의 크기와 동일하다. bfOffBits 멤버의 값 0x36은 십진수로 54이며, 이는 BITMAPFILEHEADER 구조체와 BITMAPINFOHEADER 구조체의 크기를 합한 값이다. color_4x4.bmp 파일이 트루컬러 영상이라 색상 테이블이 없기 때문이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.