
비트맵 구조는 의외로 단순하다.
일단 비트맵에 대한 크기등의 정보와 실제 데이터로 나뉜다. (하긴 다른 파일들도 정보와 데이터로 나뉘겠지만)
다 알고 있는데로 비트맵은 이미지의 하나하나의 픽셀에 대한 색깔 정보를 가지고 있는 구조다.
그래서 다른 이미지 포맷에(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부분에 직접기록한다. | |