BMP Base64 변환기

Windows 비트맵(.bmp) 파일을 Base64로 인코딩합니다. BMP는 대개 압축되지 않으므로 먼저 PNG, JPEG, WebP로 변환하면 결과가 훨씬 짧아집니다.

브라우저에서만 실행되며 어떤 데이터도 업로드되지 않습니다.

사용 방법

  1. .bmp 파일을 드롭 영역에 끌어다 놓거나, 클릭해서 선택하거나, 이미지를 붙여넣습니다.
  2. 무손실이면서 훨씬 작은 결과를 얻으려면 ‘변환 형식’에서 PNG를 선택하고, 받는 시스템이 BMP를 요구한다면 ‘원본 유지’로 둡니다.
  3. 원본 크기와 인코딩 후 크기를 비교해 얼마나 줄었는지 확인합니다.
  4. 결과를 data URI, 순수 Base64, img 태그, CSS 규칙, Markdown 이미지로 복사하거나 다운로드합니다.

BMP 파일이란?

BMP는 Windows의 장치 독립 비트맵(DIB) 형식입니다. 픽셀을 행 단위로 저장하며 거의 항상 압축하지 않습니다(4비트와 8비트 이미지용으로 단순한 런렝스 압축 모드가 있습니다). MIME 유형은 image/bmp이지만 일부 시스템은 image/x-ms-bmp로 보고하며, Base64 출력은 문자 BM을 인코딩한 Qk로 시작합니다.

압축하지 않으므로 파일 크기는 이미지 크기에 따라 바로 정해집니다. 800×600픽셀의 24비트 이미지는 약 1.4MB가 필요하며, Base64로는 1.9MB에 가까운 텍스트가 됩니다.

인코딩 전에 PNG로 변환하기

PNG도 무손실 형식이므로 일반적인 24비트 비트맵을 PNG로 변환하면 픽셀은 정확히 그대로 유지되면서 파일은 작아집니다. 보통 몇 배씩 줄어들고, 스크린샷이나 단순한 그래픽은 훨씬 더 많이 줄어듭니다. BMP로 저장된 사진이라면 적절한 품질의 JPEG나 WebP로 더 짧은 문자열을 얻을 수 있습니다. 이미지마다 원본 크기와 인코딩 후 크기가 표시되므로 차이를 쉽게 확인할 수 있습니다.

원본 BMP를 유지해야 하는 경우

실제 비트맵을 요구하는 수신 측도 있습니다. 오래된 Windows 소프트웨어, 라벨 프린터와 영수증 프린터, 마이크로컨트롤러로 구동하는 소형 디스플레이, 파일과 바이트 단위로 일치해야 하는 테스트 픽스처 등이 그렇습니다. 이런 경우에는 변환하지 마십시오. 그러면 Base64 출력은 파일을 정확히 복사한 것이 됩니다. 주요 브라우저는 모두 data:image/bmp 이미지를 표시할 수 있지만, 웹 페이지와 이메일에는 PNG가 더 나은 형식입니다.

Python과 Pillow로 같은 변환을 스크립트로 처리하는 방법은 다음과 같습니다.

from PIL import Image
import base64, io

buf = io.BytesIO()
Image.open('scan.bmp').save(buf, 'PNG')
uri = 'data:image/png;base64,' + base64.b64encode(buf.getvalue()).decode()

자주 묻는 질문

BMP Base64 문자열이 왜 이렇게 깁니까?

BMP는 모든 픽셀을 압축하지 않고 저장하며, Base64가 여기에 3분의 1을 더합니다. 먼저 PNG로 변환하면 세부 정보를 전혀 잃지 않고도 대개 문자열이 크게 짧아집니다.

BMP를 PNG로 변환하면 화질이 떨어집니까?

아니요. PNG는 무손실 형식이므로 픽셀은 그대로입니다. 저장 방식만 달라집니다.

브라우저에서 data:image/bmp URI를 표시할 수 있습니까?

예. Chrome, Edge, Firefox, Safari 모두 BMP를 표시합니다. 이메일 클라이언트와 여러 온라인 플랫폼은 BMP를 덜 안정적으로 처리하므로 이런 곳에는 PNG가 더 안전합니다.

BMP는 투명도를 지원합니까?

32비트 BMP는 알파 채널을 저장할 수 있지만 프로그램과 브라우저마다 처리 방식이 일관되지 않습니다. 투명도가 필요하면 PNG나 WebP로 변환하십시오.