BMP는 Microsoft가 Windows에 기본으로 포함한 비트맵 이미지 형식으로, 가장 초기의 그래픽 버전부터 시스템의 일부였습니다. 이에 밀접하게 관련된 변형 형식은 IBM의 OS/2에서 나왔습니다. 이 형식의 목적은 뛰어난 압축이 아니었습니다. BMP는 프로그램이 화면에 표시하는 픽셀을 거의 그대로 덤프한 것에 가깝고, 이를 어떻게 읽어야 하는지만 짧은 헤더로 감싼 구조입니다. 오늘날에도 Windows 소프트웨어 내부의 아이콘과 리소스, 단순한 캡처 프로그램의 출력물, 그리고 한 프로그램에서 다른 프로그램으로 이미지를 넘길 때 사용하는 중간 형식 등으로 BMP 파일을 종종 만나게 됩니다.
BMP가 이미지를 저장하는 방식
거의 항상 비압축입니다. 파일은 두 글자의 BM, 파일 크기, 픽셀이 시작되는 위치를 담은 작은 헤더로 시작하고, 이어서 이미지 자체를 설명하는 두 번째 헤더가 옵니다. 여기에 너비, 높이, 비트 심도, 색상이 어떻게 배열되는지가 포함됩니다. 그 다음에 선택적인 팔레트가 올 수 있고, 마지막으로 픽셀 배열이 이어지며, 아무것도 제거하지 않은 상태로 픽셀당 하나의 값이 저장됩니다.
사용자를 놀라게 하는 특이점이 두 가지 있습니다. 행은 보통 아래에서 위로 저장되므로, 파일에 저장된 첫 픽셀은 이미지의 왼쪽 아래 모서리입니다. 또 각 행은 길이가 4바이트의 배수가 되도록 패딩이 추가됩니다. 비트 심도는 1비트(2가지 색)를 시작으로, 4비트와 8비트 팔레트를 거쳐 16, 24, 32비트의 풀 컬러까지 지원합니다. 4비트와 8비트 모드에는 런렝스 압축 방식이 존재하지만 거의 사용되지 않으며, 32비트 모드에서는 알파 투명 채널을 포함할 수 있지만, 오래된 소프트웨어는 이를 무시하는 경우가 많습니다.
어떤 것도 압축하지 않기 때문에 파일 크기는 예측 가능하지만 매우 큽니다. 24비트 BMP는 이미지 내용과 상관없이 픽셀당 3바이트를 사용하므로, 작은 JPG 하나에 들어가는 사진이 BMP로는 수 메가바이트가 될 수 있습니다. 그 대신 이 형식은 읽고 쓰기 매우 간단하고, 무손실이어서 세부 정보가 전혀 버려지지 않습니다.
BMP에 포함된 메타데이터
거의 없습니다. 이것이 이 형식을 이해할 때 가장 중요한 부분입니다. 메타데이터는 파일이 스스로에 대해 보관하는 설명 정보인데, BMP는 이런 개념이 중요해지기 전에 설계되었습니다. BMP에는 EXIF, IPTC, XMP가 전혀 없습니다. 따라서 카메라 기종, 사진가 이름, 캡션, GPS 좌표를 저장해 둘 자리가 없습니다. 작성자 필드, 제목, 그리고 그 어떤 형태의 날짜 필드도 없습니다. BMP의 유일한 날짜 정보는 파일 시스템이 관리하는 날짜뿐이며, 이는 파일 밖에서 관리되고, 파일을 복사하면 바뀝니다.
보고서에서 확인할 수 있는 정보는 헤더에 들어 있는 내용뿐이며, 이미지의 이력보다는 이미지 자체를 설명합니다:
- 너비, 높이, 비트 심도, 그리고 행이 아래에서 위로 저장되는지 위에서 아래로 저장되는지.
- 압축 방식. 대부분은 압축을 전혀 사용하지 않습니다.
- 수평 및 수직 해상도. 더 익숙한 인치당 도트 수가 아니라 미터당 픽셀 수로 저장됩니다.
- 팔레트가 보유한 색상의 수와, 그중 이미지가 중요하게 간주하는 색상의 수.
프라이버시에 관련된 실제 주의점이 하나 있습니다. 확장 헤더에는 ICC 색상 프로필을 연결할 수 있는데, 이때 프로필을 임베드하는 대신 해당 이미지를 저장한 컴퓨터의 파일 경로를 통해 링크하는 것도 허용됩니다. 이런 경로에는 사용자 이름이나 폴더 구조가 드러날 수 있습니다. 흔하지는 않지만, 보고서에 링크된 프로필이 표시된다면, 말이 거의 없는 파일 안에 담긴 그 컴퓨터에 대한 실제 세부 정보입니다.
BMP를 사용할 때
BMP는 크기보다 단순함이 더 중요할 때 적합합니다. 디코더가 최소한으로만 구현된 프로그램이나 장치에 이미지를 넘기거나, BMP를 기대하는 Windows 소프트웨어 안에서 작업할 때, 또는 한 처리 단계에서 다음 단계로 이미지를 넘길 때 다시 압축하는 수고를 줄이고 싶을 때 사용하기 좋습니다. 무손실이기 때문에 여러 번 다시 저장해도 이미지가 열화되지 않습니다.
보관, 전송, 게시를 위한 용도라면 대부분 PNG가 더 적합합니다. PNG 역시 무손실이라 픽셀이 그대로 복원되지만, 필터링과 압축을 통해 파일 크기를 보통 원래의 일부 수준으로 줄이고, 제목, 작성자, 색상 프로필도 담을 수 있습니다. 사진에는 JPG나 WebP가 이보다 더 작게 나오는 경우가 많습니다. BMP는 기본값이 아니라, 기술적인 이유가 명확할 때에만 의도적으로 선택하는 것이 좋습니다.