비트맵 구조는 의외로 단순하다.
일단 비트맵에 대한 크기등의 정보와 실제 데이터로 나뉜다. (하긴 다른 파일들도 정보와 데이터로 나뉘겠지만)

다 알고 있는데로 비트맵은 이미지의 하나하나의 픽셀에 대한 색깔 정보를 가지고 있는 구조다.
그래서 다른 이미지 포맷에(jpeg, gif등) 비해 상당히 파일크기가 큰 편이다.

1. information
비트맵 식별자, 가로/세로 사이즈, 파일크기, 사용할 색상수, 데이터 시작위치등이 포함되어 있다.
주의할 점은 사용할 색상수(흔히들 말하는 흑백, 16 color, 256 color등)를 표현하는 것으로
2의 지수형태중 지수만 표현하고 있다.
ex) 16color = 2^4,  256color = 2^8

2. palette
사용할 색상을 하나씩 지정한다.
16color 라면 16가지 색깔을 하나의 색상당 RGB형태로 4byte표기한다
(Red:0~255, Green:0~255, Blue:0~255, dummy 1byte-대부분 0값이다)
결국 4byte * 16(16가지 색상) 만큼의 크기를 차지한다.
RGB값만 표현하면 3byte면 되지만 굳이 dummy 1byte를 붙인 이유는 컴퓨터의 자료표현에 대한
속성때문이다.
2의 배수로 올라가는 2^32bit(4byte)형태라면 쉽게 접근이 가능하지만
2^24bit 형태라면 위의 경우보다 메모리 접근시 연산이 더 필요하다
- 자세한 설명은 뒤로 미루겠다.(안 할지도 모른다) System programming 영역이니까.

이 palette부분은 256 color까지만 존재한다.
그 이상의 색상을 표현할땐 palette부분이 없다.

3. image data
1bit(2color) ~ 8bit(256color) 구조 까지는 palette에 대한 index만 가지고 있다.
이 인덱스는 0~255까지가 범위이다.
이 이상 벗어나게되면(색상이 더욱 많아지면) 1byte 만으로는 표현할수가 없어서
palette에 대한 index대신 직접색상 정보를 data부분에 직접기록한다.
출처: http://www.munhi.com/cgi-bin/zboard/view.php?id=sw_development&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=9

'Application Programming' 카테고리의 다른 글

쓰레드의 종류  (0) 2014.11.25
Bitmap 구조 2  (0) 2010.01.18
Posted by Finebe
,