상세 컨텐츠

본문 제목

BMP 포맷

멀티미디어/이미지(Image)

by cepiloth 2016. 1. 26. 09:36

본문

728x90
반응형




BMP 파일 포맷은 비트맵 디지털 그림을 저장하는 데 쓰이는 그림 파일 포맷이다. 특히, 마이크로소프트 윈도OS/2 운영 체제에 널리 쓰인다. 줄여서 비트맵, 또 장치 독립 비트맵의 경우 DIB 파일 포맷이라고 한다. 수많은 그래픽 사용자 인터페이스는 자체 내장 그래픽 하부 시스템에서 비트맵을 사용한다.[1] 이를테면, 마이크로소프트 윈도와 OS/2 플랫폼의 GDI 하부 시스템은 .BMP.DIB의 파일 확장자 이름을 가진다. 기본적으로 1~24비트의 색을 표현할 수 있다. 1비트는 2가지 색이며 24비트는 16777216가지 색이다. 알파 채널을 포함한 32비트 포맷이 윈도 XP에서 발표되었다. 일반적으로 데이터를 압축하지 않고 사용되지만, RLE 압축 방식도 지원한다.

데이터 블록


일반적으로 쓰이는 BMP는 다음의 데이터 블록을 담고 있다.

BMP 헤더BMP 파일에 대한 일반 정보를 담고 있다.
비트맵 정보 (DIB 헤더)비트맵 그림에 대한 자세한 정보를 담고 있다.
색 팔레트인덱스 컬러 비트맵에 쓰이는 색의 정의를 담고 있다.
비트맵 데이터화소 대 화소 단위의 실제 그림을 담고 있다.

BMP 파일 헤더

오프셋#크기목적
02BMP 파일을 식별하는 데 쓰이는 매직 넘버: 0x42 0x4D (B와 M에 대한 ASCII 코드 포인트)
24BMP 파일 크기 (바이트 단위)
62준비. 실제값은 그림을 만든 데 쓰인 응용 프로그램에 따라 달라진다.
82준비. 실제값은 그림을 만든 데 쓰인 응용 프로그램에 따라 달라진다.
104비트맵 데이터를 찾을 수 있는 시작 오프셋 (바이트 단위)

비트맵 정보 (DIB 헤더)

기본적으로 쓰이는 비트맵 정보는 다음과 같다.

크기헤더식별자GDI 지원
40윈도 V3BITMAPINFOHEADER윈도 3.0 이후의 모든 윈도 버전
12OS/2 V1BITMAPCOREHEADEROS/2 및 윈도 3.0 이후의 모든 윈도 버전
64OS/2 V2  
108윈도 V4BITMAPV4HEADER윈도 95/NT4 이후의 모든 윈도 버전
124윈도 V5BITMAPV5HEADER윈도 98/2000 이상

호환성을 이유로 대부분의 응용 프로그램은 파일을 저장할 때 오래된 DIB 헤더를 사용한다. OS/2가 물러나자, 이제 일반적으로 쓰이는 포맷은 V3 헤더가 되었다. 더 자세한 것은 아래의 표를 참조하라.

오프셋 #크기목적
144이 헤더의 크기 (40 바이트)
184비트맵 가로 (단위는 화소, signed integer).
224비트맵 세로 (단위는 화소, signed integer).
262사용하는 색 판(color plane)의 수. 1로 설정해야 한다.
282한 화소에 들어가는 비트 수이며 그림의 색 깊이를 뜻한다. 보통 값은 1, 4, 8, 16, 24, 32이다.
304압축 방식. 가능한 값에 대한 목록은 다음 표를 참조하라.
344그림 크기. 압축되지 않은 비트맵 데이터의 크기(아래 참조)이며, 파일 크기와 혼동하지 말 것.
384그림의 가로 해상도. (미터 당 화소, signed integer)
424그림의 세로 해상도. (미터 당 화소, signed integer)
464색 팔레트의 색 수, 또는 0에서 기본값 2n.
504중요한 색의 수. 모든 색이 중요할 경우 0. 일반적으로 무시.

압축 방식 (바이트 #30-33)은 다음의 값을 가진다. BI_RGB 비트맵의 경우 그림 크기 필드는 0이 될 수 있다.

식별자압축 방식비고
0BI_RGB없음가장 일반적이다
1BI_RLE8RLE 8비트/화소8비트/화소 비트맵에만 사용할 수 있다.
2BI_RLE4RLE 4비트/화소4비트/화소 비트맵에만 사용할 수 있다.
3BI_BITFIELDS비트 필드16, 32비트/화소 비트맵에만 사용할 수 있다.
4BI_JPEGJPEG비트맵은 JPEG 이미지를 포함한다.
5BI_PNGPNG비트맵은 PNG 이미지를 포함한다.

OS/2 V1 헤더 또한 자주 쓰인다. OS/2 V1 비트맵은 압축할 수 없으며 한 화소에 16/32 비트의 정보를 담을 수 없다. OS/2 V1 헤더의 모든 값은 부호 없는 정수이다.

오프셋크기목적
144이 헤더의 크기 (12 바이트)
182비트맵 가로 (화소).
202비트맵 세로 (화소).
222색판의 수. 1이 유일한 유효값이다.
242한 화소에 들어가는 비트 수. 일반적으로 1, 4, 8, 24의 값이 쓰인다.

BMP 포맷의 사용


 BMP 파일 포맷은 단순하고 윈도와 같은 여러 곳에서 널리 쓰일뿐 아니라 상대적으로 특허에서 자유로우므로, 수많은 운영 체제가 제공하는 그림 처리 프로그램이 읽고 쓸 수 있는 매우 일반적인 포맷으로 자리잡았다. 대부분의 BMP 파일은 압축을 거의 하지 않아 상대적으로 크기가 큰 반면, 수많은 BMP 파일은 ZIP과 같은 무손실 데이터 압축 알고리즘으로 상당 용량을 압축할 수 있다.

728x90
반응형

'멀티미디어 > 이미지(Image)' 카테고리의 다른 글

HEIF(High Efficiency Image File Format)  (0) 2018.09.04
Guetzli  (0) 2017.04.15
EXIF Format  (0) 2016.01.26
[IMAGE] BITMAPINFOHEADER VERSION 5  (0) 2016.01.26
BMP 블록 다이어그램  (0) 2016.01.26

관련글 더보기

댓글 영역