BMP 파일 포맷

위키백과, 우리 모두의 백과사전.

윈도우 비트맵
Windows Bitmap
파일 확장자.bmp, .dib
인터넷 미디어 타입
image/bmp, image/x-bmp
타입 코드'BMP '
'BMPf'
'BMPp'
UTIcom.microsoft.bmp
개발마이크로소프트
포맷 종류래스터 그래픽스
오픈 포맷?WMFOSP

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 (BM에 대한 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과 같은 무손실 데이터 압축 알고리즘으로 상당 용량을 압축할 수 있다.

참조[편집]

  1. Julian Smart, Stefan Csomor, and Kevin Hock (2006).

외부 링크[편집]