BMP 파일 포맷
파일 확장자 | .bmp, .dib |
---|---|
인터넷 미디어 타입 |
image/bmp, image/x-bmp |
타입 코드 | 'BMP ' 'BMPf' 'BMPp' |
UTI | com.microsoft.bmp |
개발 | 마이크로소프트 |
포맷 종류 | 래스터 그래픽스 |
오픈 포맷? | WMF용 OSP |
BMP 파일 포맷은 비트맵 디지털 그림을 저장하는 데 쓰이는 그림 파일 서식이다.특히, 마이크로소프트 윈도우, OS/2 운영 체제에 널리 쓰인다. 줄여서 비트맵, 또 장치 독립 비트맵의 경우 DIB 파일 서식이라고 한다.
수많은 그래픽 사용자 인터페이스는 자체 내장 그래픽 하부 시스템에서 비트맵을 사용한다.[1] 이를테면, 마이크로소프트 윈도우와 OS/2 플랫폼의 GDI 하부 시스템은 .BMP
, .DIB
의 파일 확장자 이름을 가진다.
기본적으로 1~24비트의 색을 표현할 수 있다. 1비트는 2가지 색이며 24비트는 16777216가지 색이다. 알파 채널을 포함한 32비트 포맷이 윈도우 XP에서 발표되었다. 일반적으로 데이터를 압축하지 않고 사용되지만, RLE 압축 방식도 지원한다.
데이터 블록
[편집]일반적으로 쓰이는 BMP는 다음의 데이터 블록을 담고 있다.
BMP 헤더 | BMP 파일에 대한 일반 정보를 담고 있다. |
비트맵 정보(DIB 헤더) | 비트맵 그림에 대한 자세한 정보를 담고 있다. |
색 팔레트 | 인덱스 컬러 비트맵에 쓰이는 색의 정의를 담고 있다. |
비트맵 데이터 | 화소 대 화소 단위의 실제 그림을 담고 있다. |
BMP 파일 헤더
[편집]오프셋# | 크기 | 목적 |
---|---|---|
0 | 2 | BMP 파일을 식별하는 데 쓰이는 매직 넘버: 0x42 0x4D (B와 M에 대한 ASCII 코드 포인트) |
2 | 4 | BMP 파일 크기 (바이트 단위) |
6 | 2 | 예약필드. 실제값은 그림을 만든 데 쓰인 응용 프로그램에 따라 달라진다. |
8 | 2 | 예약필드. 실제값은 그림을 만든 데 쓰인 응용 프로그램에 따라 달라진다. |
10 | 4 | 비트맵 데이터를 찾을 수 있는 시작 오프셋 (바이트 단위) |
비트맵 정보 (DIB 헤더)
[편집]기본적으로 쓰이는 비트맵 정보는 다음과 같다.
크기 | 헤더 | 식별자 | GDI 지원 |
---|---|---|---|
40 | 윈도 V3 | BITMAPINFOHEADER | 윈도우 3.0 이후의 모든 윈도 버전 |
12 | OS/2 V1 | BITMAPCOREHEADER | OS/2 및 윈도우 3.0 이후의 모든 윈도 버전 |
64 | OS/2 V2 | ||
108 | 윈도 V4 | BITMAPV4HEADER | 윈도 95/NT4 이후의 모든 윈도 버전 |
124 | 윈도 V5 | BITMAPV5HEADER | 윈도 98/2000 이상 |
호환성을 이유로 대부분의 응용 프로그램은 파일을 저장할 때 오래된 DIB 헤더를 사용한다. OS/2가 물러나자, 이제 일반적으로 쓰이는 포맷은 V3 헤더가 되었다. 더 자세한 것은 아래의 표를 참조하라.
오프셋 # | 크기 | 목적 |
---|---|---|
14 | 4 | 이 헤더의 크기 (40 바이트) |
18 | 4 | 비트맵 가로 (단위는 화소, signed integer). |
22 | 4 | 비트맵 세로 (단위는 화소, signed integer). |
26 | 2 | 사용하는 색 판(color plane)의 수. 1로 설정해야 한다. |
28 | 2 | 한 화소에 들어가는 비트 수이며 그림의 색 깊이를 뜻한다. 보통 값은 1, 4, 8, 16, 24, 32이다. |
30 | 4 | 압축 방식. 가능한 값에 대한 목록은 다음 표를 참조하라. |
34 | 4 | 그림 크기. 압축되지 않은 비트맵 데이터의 크기(아래 참조)이며, 파일 크기와 혼동하지 말 것. |
38 | 4 | 그림의 가로 해상도. (미터 당 화소, signed integer) |
42 | 4 | 그림의 세로 해상도. (미터 당 화소, signed integer) |
46 | 4 | 색 팔레트의 색 수, 또는 0에서 기본값 2n. |
50 | 4 | 중요한 색의 수. 모든 색이 중요할 경우 0. 일반적으로 무시. |
압축 방식 (바이트 #30-33)은 다음의 값을 가진다. BI_RGB 비트맵의 경우 그림 크기 필드는 0이 될 수 있다.
값 | 식별자 | 압축 방식 | 비고 |
---|---|---|---|
0 | BI_RGB | 없음 | 가장 일반적이다 |
1 | BI_RLE8 | RLE 8비트/화소 | 8비트/화소 비트맵에만 사용할 수 있다. |
2 | BI_RLE4 | RLE 4비트/화소 | 4비트/화소 비트맵에만 사용할 수 있다. |
3 | BI_BITFIELDS | 비트 필드 | 16, 32비트/화소 비트맵에만 사용할 수 있다. |
4 | BI_JPEG | JPEG | 비트맵은 JPEG 이미지를 포함한다. |
5 | BI_PNG | PNG | 비트맵은 PNG 이미지를 포함한다. |
OS/2 V1 헤더 또한 자주 쓰인다. OS/2 V1 비트맵은 압축할 수 없으며 한 화소에 16/32 비트의 정보를 담을 수 없다. OS/2 V1 헤더의 모든 값은 부호 없는 정수이다.
오프셋 | 크기 | 목적 |
---|---|---|
14 | 4 | 이 헤더의 크기 (12 바이트) |
18 | 2 | 비트맵 가로 (화소). |
20 | 2 | 비트맵 세로 (화소). |
22 | 2 | 색판의 수. 1이 유일한 유효값이다. |
24 | 2 | 한 화소에 들어가는 비트 수. 일반적으로 1, 4, 8, 24의 값이 쓰인다. |
BMP 포맷의 사용
[편집]BMP 파일 포맷은 단순하고 윈도와 같은 여러 곳에서 널리 쓰일뿐 아니라 상대적으로 특허에서 자유로우므로, 수많은 운영 체제가 제공하는 그림 처리 프로그램이 읽고 쓸 수 있는 매우 일반적인 포맷으로 자리잡았다.
대부분의 BMP 파일은 압축을 거의 하지 않아 상대적으로 크기가 큰 반면, 수많은 BMP 파일은 ZIP과 같은 무손실 데이터 압축 알고리즘으로 상당 용량을 압축할 수 있다.
참조
[편집]- ↑ Julian Smart, Stefan Csomor, and Kevin Hock (2006).
외부 링크
[편집]- BMP - 텀즈