JPG Base64 변환기

JPG와 JPEG 이미지를 Base64로 인코딩합니다. 원본 파일을 바이트 단위로 그대로 유지하거나, 더 낮은 품질과 작은 너비로 다시 인코딩해 문자열을 짧게 만들 수 있습니다.

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

사용 방법

  1. .jpg 또는 .jpeg 파일을 드롭 영역에 끌어다 놓거나, 클릭해서 선택하거나, 이미지를 붙여넣습니다.
  2. 파일을 그대로 유지하려면 ‘변환 형식’을 ‘원본 유지’로 둡니다. 크기를 줄이려면 JPEG 또는 WebP를 선택하고 ‘품질’을 낮춥니다.
  3. 사진이 실제로 표시될 크기보다 크다면 ‘최대 너비’를 설정합니다.
  4. 페이지용 img 태그나 API용 순수 Base64처럼 필요한 출력을 복사하거나 파일로 다운로드합니다.

JPEG 간단히 알아보기

JPEG는 사진의 표준 형식입니다. 눈으로 거의 알아차리기 어려운 세부 정보를 버리는 손실 압축을 사용하며 투명도는 지원하지 않습니다. 파일 확장자는 .jpg, .jpeg, 때로는 .jfif이지만 MIME 유형은 항상 image/jpeg입니다. image/jpg는 많은 브라우저가 받아들이기는 하지만 등록된 유형이 아닙니다. JPEG data URI는 이미지 시작(SOI) 마커를 인코딩한 data:image/jpeg;base64,/9j/로 시작합니다.

인코딩 전에 사진 크기 줄이기

Base64의 부담이 가장 큰 것은 사진입니다. 200KB짜리 JPEG는 약 270KB의 텍스트가 됩니다. 가장 큰 차이를 만드는 설정은 두 가지입니다.

  • 최대 너비. 너비를 절반으로 줄이면 픽셀 수는 4분의 1이 됩니다. 너비가 4000픽셀인 휴대폰 사진을 그 크기 그대로 써야 하는 경우는 드뭅니다.
  • 품질. 70~80% 정도의 값은 대개 화면에서 원본과 똑같아 보이면서 크기는 훨씬 작습니다. 값을 너무 낮추면 블록 모양의 아티팩트가 나타납니다.

비슷한 품질의 WebP로 변환하면 더 작아지는 경우가 많습니다. 설정마다 표시되는 인코딩 후 크기를 보면서, 보기에 문제가 없는 가장 작은 결과를 사용하십시오.

EXIF 메타데이터

카메라와 휴대폰으로 찍은 사진에는 카메라 모델, 촬영 날짜와 시간, 때로는 GPS 좌표까지 담긴 EXIF 메타데이터가 들어 있습니다. 변환하지 않으면 Base64 출력에는 메타데이터를 포함한 원본 바이트가 그대로 담기므로, 디코딩하는 사람은 누구나 이 정보를 읽을 수 있습니다. API가 해시를 검사하거나 촬영 날짜를 읽는 경우처럼 파일이 정확히 같아야 할 때는 이렇게 하는 것이 맞습니다.

변환하면 브라우저에서 픽셀을 다시 인코딩하며, 이때 EXIF 데이터는 옮겨지지 않습니다. 출력이 더 작아지고 사진을 찍은 장소도 더 이상 드러나지 않습니다.

JPEG data URI를 쓸 만한 경우

작고 흐릿한 플레이스홀더(전체 사진을 지연 로딩하는 동안 인라인으로 넣는 너비 20~40픽셀의 이미지), JSON 응답 속 썸네일, 단일 파일 HTML 내보내기에 잘 맞습니다. 히어로 이미지와 갤러리는 브라우저가 캐시할 수 있도록 별도 파일로 두어야 합니다.

# Python
import base64
with open('photo.jpg', 'rb') as f:
    uri = 'data:image/jpeg;base64,' + base64.b64encode(f.read()).decode('ascii')

자주 묻는 질문

JPG와 JPEG는 같은 것입니까?

예. 짧은 .jpg 확장자는 확장자를 세 글자까지만 허용하던 시스템에서 비롯되었습니다. 둘 다 MIME 유형이 image/jpeg인 같은 형식입니다.

Base64로 인코딩하면 JPEG 품질이 떨어집니까?

아니요. Base64는 파일 바이트를 손실 없이 표현합니다. 품질은 변환을 선택했을 때만 바뀌며, 이때 이미지는 설정한 ‘품질’로 다시 인코딩됩니다.

JPEG data URI에 투명 배경을 넣을 수 있습니까?
아니요. JPEG에는 알파 채널이 없습니다. 투명도가 필요하면 PNG나 WebP를 사용하십시오.
Base64 문자열에 사진을 찍은 위치가 들어 있습니까?

들어 있을 수 있습니다. 원본 JPEG의 EXIF 메타데이터에 GPS 정보가 있고 이를 그대로 인코딩했다면 위치 정보가 문자열에 포함됩니다. 이미지를 변환하면 EXIF 메타데이터가 제거됩니다.