Windows 비트맵 (.bmp)
Microsoft 표준비트맵 이미지 파일(BMP)은 마이크로소프트의 기본적인 장치 독립형 래스터 그래픽 포맷으로, 직접적인 하드웨어 프레임버퍼 호환성을 갖추고 비압축 또는 RLE 압축된 스캔라인을 저장합니다.
BMP을(를) PNG(으)로 변환
무료 브라우저 내 BMP-PNG 변환기. 기기에서 파일을 즉시 변환하세요.
검사 및 메타데이터
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 BMP 파일을 식별합니다:
바이트 단위 헤더 시그니처 (매직 바이트)
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 BMP 파일을 식별합니다:
16진수 시그니처 (오프셋 0):
42 4DASCII 표현: BM
표준화: Microsoft Windows Device-Independent Bitmap (DIB) Architecture
기술 사양
| 컨테이너 아키텍처 | BITMAPFILEHEADER followed by BITMAPINFOHEADER (DIB) and raster pixel array |
| 압축 | Uncompressed raw scanlines, or optional BI_RLE8 / BI_RLE4 run-length encoding |
| 바이트 엔디안 | Little-Endian (Intel x86 byte order) |
| 색 공간 | Device Dependent RGB, sRGB (BITMAPV5HEADER embedded) |
| 채널 및 구조 | 1-bit monochrome, 4-bit / 8-bit paletted, 16-bit, 24-bit RGB, or 32-bit RGBA |
| 최대 크기 | 2,147,483,647 x 2,147,483,647 pixels (signed 32-bit integer) |
| 투명도 | 32-bit BGRA alpha mask supported in modern BITMAPV3HEADER and V5HEADER formats |
| 스트리밍 및 프로그레시브 | Non-streamable; scanlines stored upside-down (bottom-up) unless height is negative |
기술 비교 매트릭스: BMP 대 경쟁사
| 기술적 속성 | BMP (현재) | PNG | TIFF | JPG |
|---|---|---|---|---|
| 압축 모드 | 비압축 / 최소 RLE | 무손실 Deflate (~70% 더 작음) | 비압축 / LZW / Zip | 손실 DCT (~90% 더 작음) |
| 디코딩 속도 | 즉각적인 메모리 복사 | Deflate 압축 해제 필요 | LZW/ZIP 압축 해제 필요 | IDCT 계산 필요 |
| 스캔라인 정렬 | 아래에서 위로 (반전됨) | 위에서 아래로 | 위에서 아래로 / 스트립 | 위에서 아래로 MCU 블록 |
| 웹 적합성 | 매우 나쁨 (용량이 큼) | 그래픽용으로 우수함 | 나쁨 (탁상 출판) | 사진용으로 우수함 |
일반적인 손상 모드 및 헥스 복구 가이드
이미지가 대각선으로 찌그러지거나 비스듬하게 왜곡되어 렌더링됩니다.
근본 원인: 잘못된 행 패딩 계산 (각 스캔라인을 4바이트 경계로 패딩하지 못한 경우).
복구: File2File Image Converter를 사용하여 다시 인코딩하여 올바른 32비트 스캔라인 스트라이드를 적용하세요.
보안 분석 및 파서 공격 벡터
BMP 디코더는 신뢰할 수 없는 DIB 헤더 크기를 기반으로 버퍼를 할당할 때 종종 버퍼 오버리드를 겪습니다.
알려진 공격 벡터
- 너비 * 높이 * bpp 계산 시 정수 오버플로우로 인한 작은 힙 할당 및 범위를 벗어난 쓰기.
- 할당된 버퍼를 넘어선 메모리 쓰기를 유발하는 손상된 RLE8/RLE4 런레인지 이스케이프 시퀀스.
- 조작된 헤더 크기로 인해 트리거되는 멀티기가바이트 메모리 할당을 통한 서비스 거부(DoS).
방어적 모범 사례:
역사적 배경 및 주요 이력
주요 장점
- 압축 손실 없음: 압축 아티팩트가 전혀 없는 100% 비트 정확도의 픽셀 저장.
- Windows, Linux, macOS의 모든 버전에서 보편적인 네이티브 운영 체제 지원.
- 간단한 디코딩 복잡도로 인해 임베디드 마이크로컨트롤러 및 그래픽 프로그래밍 교육에 이상적임.
기술적 제한 사항 및 단점
- DEFLATE나 허프만 코딩 같은 현대적인 엔트로피 압축이 없어 발생하는 엄청난 파일 크기.
- 웹 전송이나 모바일 네트워크 배포에 비효율적임.
- 상향식 스캔라인 정렬로 인해 현대의 하향식 그래픽 파이프라인에서 수직 행 반전이 필요함.
흥미로운 기술적 상식
- BMP는 OS/2에서 사용되는 수학적 데카르트 좌표계 때문에 기본적으로 이미지 스캔라인을 거꾸로(아래에서 위로) 저장합니다.
- BMP 헤더의 높이 값이 음수로 설정되면 이미지가 위에서 아래로 올바르게 디코딩됩니다.
- BMP 파일의 모든 스캔라인은 4바이트의 배수(32비트 경계 정렬)가 되도록 0으로 패딩되어야 합니다.
자주 묻는 기술 질문
BMP 파일이 매우 큰 이유는 무엇인가요?
BMP 파일은 모든 개별 픽셀에 대한 원시 비압축 색상 값을 저장하는 반면, PNG와 같은 포맷은 품질 손실 없이 해당 데이터를 압축하기 때문입니다.
BMP도 투명도를 지원할 수 있나요?
네. 32비트 BMP 파일(BITMAPV3HEADER 이상 사용)은 8비트 알파 채널을 저장할 수 있지만, 구형 소프트웨어에서는 지원 여부가 다를 수 있습니다.
BMP 파일의 용량을 줄이려면 어떻게 해야 하나요?
File2File.app을 사용하여 BMP 파일을 PNG로 변환하면 시각적 품질 손실 없이 파일 크기를 일반적으로 60%에서 85%까지 줄일 수 있습니다.