> JPG | encode | data-uri <
// JPG / JPEG 사진을 Base64 문자열 및 데이터 URI로 인코딩 — EXIF, DCT 계수, 품질 보존
JPG / JPEG 파일을 여기에 드롭하거나 클릭하여 선택
클릭하여 JPG / JPEG 파일 찾아보기
비트 동일
JPEG가 재압축되지 않습니다. DCT 계수, 양자화 테이블, EXIF 메타데이터가 변경되지 않은 채 왕복합니다.
로컬 처리
사진은 FileReader + btoa()를 사용하여 브라우저에서 인코딩됩니다. 업로드 없음, 서버 없음, 이미지 바이트에 대한 분석 없음.
바로 붙여넣기
HTML, CSS, 이메일 또는 JSON API 페이로드에 바로 사용할 수 있는 표준 호환 data:image/jpeg;base64,… URI를 복사하세요.
// FAQ — JPG TO BASE64
Q: JPG Base64 인코딩이란 무엇인가요?
A: Base64 알파벳(RFC 4648)을 사용하여 .jpg / .jpeg 파일의 바이너리 바이트를 ASCII 안전 문자열로 다시 작성합니다. 결과 텍스트는 별도의 파일이 필요 없이 HTML, CSS, 이메일, JSON 본문 또는 기타 텍스트 전용 채널에 임베드할 수 있습니다. 특히 기본 JPEG는 재인코딩되지 않습니다 — 모든 DCT 계수, 양자화 테이블, 허프만 테이블, EXIF/IPTC/XMP 메타데이터 마커가 보존됩니다.
Q: JPG를 Base64로 어떻게 인코딩하나요?
A: .jpg 또는 .jpeg 파일을 업로드 존으로 드래그하세요(또는 클릭하여 찾아보세요). 이 도구는 FileReader.readAsDataURL()로 파일을 열어 붙여넣기 준비가 된 data:image/jpeg;base64,/9j/4AAQSkZ… URI를 생성합니다. 직접 <img> 임베딩을 위해 데이터 URI를 선택하거나, API가 data:image/jpeg;base64, 접두사 없이 원시 페이로드를 기대하는 경우 Base64 페이로드만을 선택하세요.
Q: JPG를 Base64로 인코딩하면 이미지 품질이 저하되나요?
A: 아니요. Base64는 가역적 바이너리-텍스트 변환이며 — 재인코딩이 아닙니다. JPEG의 원본 압축(저장 당시의 품질 수준, 서브샘플링 모드 및 허프만 테이블)이 바이트 단위로 보존됩니다. Base64를 파일로 다시 디코딩하면 SHA-256 해시가 원본과 일치합니다. JPEG에 영향을 줄 수 있는 유일한 품질 손실은 편집기에서 처음 저장될 때 발생했으며, Base64는 추가 손실을 일으키지 않습니다.
Q: 왜 모든 JPG Base64 문자열은 <code>/9j/</code>로 시작하나요?
A: 모든 JPEG의 처음 두 바이트는 이미지 시작 마커 FF D8이며, 그 뒤에 FF E0(JFIF) 또는 FF E1(EXIF) 같은 애플리케이션 마커가 옵니다. 처음 3바이트 FF D8 FF를 Base64로 인코딩하면 항상 /9j/가 됩니다. 따라서 /9j/4AAQ(JFIF) 또는 /9j/2wC(많은 스마트폰 카메라)로 시작하는 문자열은 안정적으로 JPEG입니다 — 디버깅 시 유용한 정합성 검사입니다.
Q: JPG는 Base64 인코딩 후 얼마나 커지나요?
A: Base64는 약 33%의 오버헤드를 추가합니다: size_base64 = 4 × ⌈size_bytes / 3⌉. 250 KB 사진은 약 340 KB의 텍스트가 됩니다. JPEG는 이미 압축되어 있기 때문에 Base64 문자열에 gzip/Brotli를 적용해도 약 10%만 회복됩니다. 인라인 이미지의 경우 원본을 약 5 KB 이하(≈ 인코딩된 6.8 KB)로 유지하지 않으면 HTML/CSS를 부풀리고 초기 페인트 성능이 저하됩니다.
Q: HTML에서 JPG를 Base64로 어떻게 임베드하나요?
A: src 속성에 전체 데이터 URI를 붙여넣으세요: <img src="data:image/jpeg;base64,/9j/4AAQSkZ…" alt="cover">
HTTP 요청이 이루어지지 않습니다 — 브라우저가 Base64를 디코딩하고 즉시 사진을 표시합니다. 이것이 인라인 JPEG 썸네일이 스크롤 없이 볼 수 있는 영역의 히어로 섹션, 이메일 서명 및 단일 파일 HTML 보고서에서 인기 있는 이유입니다.
Q: JavaScript, Node, Python, PHP, Go에서 JPG를 Base64로 어떻게 인코딩하나요?
A:
JavaScript (브라우저): new FileReader() + .readAsDataURL(jpgFile) → result가 데이터 URI
Node.js: fs.readFileSync('photo.jpg').toString('base64')
Python: base64.b64encode(open('photo.jpg','rb').read()).decode()
PHP: base64_encode(file_get_contents('photo.jpg'))
Go: base64.StdEncoding.EncodeToString(jpgBytes)
Ruby: Base64.strict_encode64(File.read('photo.jpg'))
Bash: base64 -w0 photo.jpg (GNU) 또는 base64 -i photo.jpg -o out.txt (macOS)
Q: JPG를 Base64로 인코딩할 때 EXIF 데이터가 보존되나요?
A: 예, 기본적으로. EXIF 세그먼트(카메라 모델, 날짜/시간, GPS 좌표, 렌즈, 노출, 화이트 밸런스, 방향)는 JPEG 내부에 APP1 마커로 존재합니다. Base64는 비트 단위 변환이기 때문에 마커가 그대로 보존되며 — 이미지가 다시 디코딩될 때 EXIF는 원래 상태 그대로입니다. 개인 정보가 중요한 경우(GPS 좌표, 시리얼 번호) 인코딩하기 전에 exiftool -all= 같은 도구나 브라우저 캔버스 재내보내기로 EXIF를 제거하세요. Base64 자체는 이를 제거해주지 않습니다.
Q: 별도 파일 대신 JPG → Base64를 언제 사용해야 하나요?
A: 다음과 같은 경우 Base64 JPEG 데이터 URI를 사용하세요:
• 이미지가 작고(< 5 KB) 초기 페인트에 중요한 경우
• JSON API 본문, GraphQL mutation 또는 WebSocket 프레임 내부로 사진을 보내는 경우
• 외부 CDN URL에 의존할 수 없는 자체 포함 HTML 이메일, 보고서 또는 PDF 내보내기를 구축하는 경우
• 사진을 데이터베이스 TEXT 열로 직렬화하는 경우(BLOB을 사용할 수 없을 때)
이미지가 크거나 여러 페이지에서 재사용되거나 자체 장기 캐싱 헤더가 필요한 경우에는 일반 .jpg URL을 선호하세요.
Q: JPG vs JPEG — 다른 형식인가요?
A: 아니요. .jpg와 .jpeg는 동일한 형식(Joint Photographic Experts Group)의 다른 파일 확장자일 뿐입니다. 초기 Windows 8.3 파일명 제한으로 인해 3글자 확장자가 강요되었고, 그래서 .jpg가 자리잡았습니다. 최신 시스템은 둘 다 허용합니다. MIME 타입은 항상 image/jpeg이며, Base64 데이터 URI 접두사는 항상 data:image/jpeg;base64,입니다 — 이 도구는 두 확장자를 동일하게 취급합니다.
Q: Base64 인코딩은 이미지 압축의 한 형태인가요?
A: 아니요 — 반대입니다. JPEG 자체는 이미 DCT + 허프만 코딩으로 압축되어(원시 픽셀 데이터에서 10–20배 감소 달성) 있습니다. 그런 다음 Base64는 ASCII 안전성과 교환으로 파일을 다시 약 33% 더 크게 만듭니다. 일부 채널(HTML 속성, JSON 문자열, 이메일, URL)은 원시 바이너리를 전송할 수 없기 때문에 Base64를 여전히 사용해야 합니다. 그러나 Base64에서 크기 절약을 기대하지 마세요. 실제로는 Base64 텍스트 위에 gzip/Brotli를 항상 고려하세요.
Q: URL에서 사용하기 위해 JPEG를 URL-safe Base64 페이로드로 인코딩할 수 있나요?
A: 예 — Base64url 인코더(RFC 4648 §5)로 전환하세요. +/ 대신 -_ 알파벳을 사용하고 후행 = 패딩을 생략하여 쿼리 문자열이나 JWT에 삽입하기 안전한 페이로드를 생성합니다. 원시 표준 Base64 JPEG 페이로드는 일반적으로 수백 KB 길이이며 많은 URL 길이 제한(브라우저/서버에 따라 2–8 KB)을 깨뜨리므로 파일에 링크하는 것이 전체 사진을 URL로 인코딩하는 것보다 거의 항상 더 좋은 아이디어입니다.
Q: 브라우저 메모리가 부족해지기 전에 어떤 JPG 크기를 인코딩할 수 있나요?
A: 인코딩은 FileReader로 스트리밍 방식으로 이루어진 후, 결과에 btoa()가 호출됩니다. 최신 데스크톱 브라우저는 100–200 MB 입력을 문제없이 처리합니다. 모바일 브라우저는 메모리 압력에 도달하기 전 약 40 MB까지 안정적으로 처리합니다. 정말로 거대한 이미지(중형 포맷 카메라의 RAW-to-JPEG 내보내기)의 경우 서버 측 인코더나 청크 기반 처리를 고려하세요 — 이 도구는 사진이 100 MB보다 크면 경고합니다.
Q: JPG → Base64 vs PNG → Base64 — 어느 것을 사용해야 하나요?
A: 사진, 카메라 롤, 소셜 미디어 이미지, 80–90% 품질의 JPEG 압축이 허용되는 부드러운 그라데이션이 있는 모든 것에는 JPG → Base64를 사용하세요. 일반적인 1080p 사진은 JPEG로 약 200 KB vs PNG로 약 2 MB입니다. 아이콘, 로고, 스크린샷, 다이어그램, 투명도나 선명한 가장자리가 있는 모든 것에는 PNG → Base64를 사용하세요. 두 가지 혼합: 히어로 사진에 Base64 JPG + 선명한 오버레이 아이콘에 Base64 PNG는 일반적인 패턴입니다.