Base64 Image Decoder

Base64 데이터 URI를 이미지로 디코드

Base64 입력

Base64 이미지 디코딩이란 무엇입니까?

Base64 이미지 디코딩은 Base64 이미지 인코딩의 역과정입니다. 이미지를 나타내는 Base64 문자열 또는 data URI를 가져와 표시 가능한 이진 픽셀 데이터로 변환합니다. data:image/png;base64,iVBORw0KGgo...와 같은 문자열을 받으면 디코딩은 data URI 접두사를 제거하고, RFC 4648에 정의된 Base64 인코딩을 반전시키며, 원본 이미지 바이트를 재구성합니다. 그러면 브라우저가 디코딩된 바이트를 표시 가능한 이미지로 렌더링할 수 있습니다.

Data URI (RFC 2397)는 MIME 유형과 Base64 인코딩된 콘텐츠를 단일 문자열로 번들합니다. API 응답, HTML 전자 메일 소스 코드, CSS 스타일시트 및 이미지가 이진 파일이 아닌 텍스트로 저장되는 데이터베이스 레코드에 자주 나타납니다. 이러한 문자열을 디코딩하는 것은 이미지를 미리 보고, 그 내용을 확인하고, 독립적인 파일로 저장하기 위해 필요합니다. Base64는 3바이트의 이진 데이터를 나타내기 위해 4개의 ASCII 문자를 사용하므로, 인코딩된 문자열은 항상 원본 이미지보다 약 33% 깁니다.

이 도구는 완전한 data URI (data:image/png;base64,...)와 data: 접두사가 없는 원본 Base64 문자열을 모두 구문 분석합니다. 원본 문자열의 경우, 파일의 매직 바이트에 해당하는 처음 몇 개의 Base64 문자를 검사하여 이미지 형식이 자동으로 감지됩니다. 예를 들어 iVBORw0KGgo는 항상 PNG 파일을 나타냅니다. 디코딩된 이미지는 브라우저에서 직접 렌더링되며 파일로 다운로드할 수 있습니다.

일반적인 개발자 시나리오는 프로필 사진이나 문서 썸네일을 JSON 필드 내 Base64 문자열로 반환하는 REST API로 작업하는 것입니다. 예를 들어 {"avatar": "data:image/png;base64,iVBORw0KGgo..."} 같은 경우입니다. 이미지를 사용하려면 필드 값을 추출하고, 쉼표를 포함하여 data URI 접두사를 제거한 후, 남은 Base64 문자를 JavaScript의 atob() 또는 Python의 base64.b64decode()와 같은 디코더를 통해 전달하여 원본 바이트를 복구합니다. 이 도구에 전체 값을 붙여넣으면 모든 이러한 수동 단계를 건너뛰고 이미지가 즉시 렌더링됩니다.

이 Base64 이미지 디코더를 사용해야 하는 이유는 무엇입니까?

이 도구는 Base64 이미지 데이터를 브라우저에서 완전히 표시 가능하고 다운로드 가능한 이미지로 변환합니다. 업로드 없음, 서버 처리 없음, 계정 필요 없음.

즉시 미리보기
Base64 문자열 또는 data URI를 붙여넣고 디코딩된 이미지를 즉시 봅니다. 서버측 처리를 기다릴 필요 없음 — 브라우저가 로컬로 디코딩 및 렌더링합니다.
🔒
프라이버시 우선 처리
이미지 데이터가 기기를 떠나지 않습니다. 디코딩은 기본 JavaScript API를 사용하여 브라우저에서 완전히 실행됩니다. Base64 문자열이 서버로 전송되지 않습니다.
🖼️
자동 형식 감지
PNG, JPEG, SVG, WebP, GIF, BMP 및 ICO를 지원합니다. MIME 유형은 data URI 접두사에서 추출되거나 접두사가 없을 때 Base64 매직 바이트에서 자동으로 감지됩니다.
📋
결과 다운로드
디코딩된 이미지를 올바른 확장자가 있는 파일로 저장합니다. 다운로드는 감지된 형식을 사용합니다. .txt에서 .png로의 수동 이름 변경이 필요하지 않습니다.

Base64 이미지 디코딩 사용 사례

프런트엔드 디버깅
HTML, CSS 또는 JavaScript 소스 코드에 포함된 Base64 인코딩된 이미지를 검사합니다. data URI를 붙여넣어 배포 전에 올바른 이미지가 렌더링되고 있는지 확인합니다.
API 응답 검사
REST 및 GraphQL API는 종종 JSON 페이로드에서 이미지를 Base64 문자열로 반환합니다 — 사용자 아바타, 문서 썸네일 또는 QR 코드입니다. 디코딩하여 콘텐츠가 예상과 일치하는지 확인합니다.
전자 메일 템플릿 개발
HTML 전자 메일은 외부 이미지 차단을 우회하기 위해 이미지를 data URI로 자주 포함합니다. Base64를 디코딩하여 테스트 전자 메일을 보내지 않고도 수신자에게 표시될 내용을 미리 봅니다.
데이터베이스 레코드 확인
이미지가 데이터베이스 열에 Base64 텍스트로 저장되는 경우 (MongoDB, PostgreSQL 텍스트 필드), 마이그레이션 또는 가져오기 후 데이터 무결성을 확인하기 위해 샘플 레코드를 디코딩합니다.
보안 분석
로그, 전자 메일 또는 웹 트래픽에서 의심스러운 Base64 이미지 페이로드를 검사합니다. 디코딩은 실제 이미지 콘텐츠 및 형식을 표시하여 추적 픽셀 또는 예상치 못한 포함된 데이터를 식별하는 데 도움이 됩니다.
학습 및 교육
이미지를 인코딩한 다음 디코딩하여 Base64 인코딩이 어떻게 작동하는지 이해합니다. 원본 파일을 변환된 결과와 비교하여 Base64가 손실 없는 인코딩임을 확인합니다.

이미지용 Data URI 구조

data URI는 이미지 유형과 인코딩된 콘텐츠를 단일 문자열로 패킹합니다. 각 구성 요소는 올바른 디코딩에 필수적입니다. 스키마 (data:)는 URL이 외부 리소스에 대한 참조가 아니라 자체 포함되어 있음을 나타냅니다. MIME 유형 (예: image/png)은 렌더러에 원본 바이트를 해석할 때 사용할 형식을 알려줍니다. 마커 ;base64,은 일반 텍스트 형식에 백분율 인코딩을 사용하는 data URI와 Base64 인코딩 콘텐츠를 구분합니다. Base64 페이로드 자체는 1개 또는 2개의 패딩 문자 =로 끝날 수 있습니다. 이들은 입력 바이트 수가 3의 배수가 아닐 때 필요하여 인코딩된 길이가 항상 4의 배수임을 보장합니다. 이러한 구성 요소 중 하나를 생략하거나 자르면 디코딩이 실패하거나 손상된 이미지가 생성됩니다.

구성 요소설명
data:URI scheme identifier
image/pngMIME type declaring the image format
;base64,Encoding declaration (always base64 for binary)
iVBORw0KGgo...Base64-encoded pixel data

Base64에서 이미지 형식 감지

Base64 문자열에 data: 접두사가 없을 때, 처음 몇 문자를 검사하여 이미지 형식을 식별할 수 있습니다. 이 문자들은 파일의 매직 바이트에 해당합니다. 즉, 각 이미지 파일의 시작 부분에 있는 고정 바이트 시퀀스로 형식을 식별합니다.

형식Base64 접두사16진수 시그니처MIME 유형
PNGiVBORw0KGgo89 50 4E 47image/png
JPEG/9j/FF D8 FFimage/jpeg
GIFR0lGOD47 49 46 38image/gif
WebPUklGR52 49 46 46image/webp
SVGPHN2Zy3C 73 76 67 (text)image/svg+xml
BMPQk42 4Dimage/bmp
ICOAAABAA00 00 01 00image/x-icon

코드 예제

인기 있는 프로그래밍 언어 및 환경에서 Base64 이미지 문자열을 이미지 파일로 디코딩하는 방법:

JavaScript (browser)
// Decode a Base64 data URI to a Blob and create a download link
const dataUri = 'data:image/png;base64,iVBORw0KGgo...'

// Method 1: fetch API (simplest)
const res  = await fetch(dataUri)
const blob = await res.blob()
// blob.type → "image/png", blob.size → 2048

// Method 2: manual decode for older environments
const [header, b64] = dataUri.split(',')
const mime    = header.match(/:(.*?);/)[1]   // → "image/png"
const binary  = atob(b64)
const bytes   = Uint8Array.from(binary, c => c.charCodeAt(0))
const blob2   = new Blob([bytes], { type: mime })

// Create a download link
const url = URL.createObjectURL(blob)
const a   = document.createElement('a')
a.href = url
a.download = 'decoded.png'
a.click()
URL.revokeObjectURL(url)
Python
import base64
import re

data_uri = 'data:image/png;base64,iVBORw0KGgo...'

# Parse the data URI
match = re.match(r'data:(image/[\w+.-]+);base64,(.+)', data_uri)
mime_type = match.group(1)    # → "image/png"
b64_data  = match.group(2)

# Decode and write to file
image_bytes = base64.b64decode(b64_data)
ext = mime_type.split('/')[1].replace('jpeg', 'jpg').replace('svg+xml', 'svg')

with open(f'output.{ext}', 'wb') as f:
    f.write(image_bytes)
# → writes output.png (byte-for-byte identical to the original)

# Decode raw Base64 (no data: prefix)
raw_b64 = 'iVBORw0KGgo...'
image_bytes = base64.b64decode(raw_b64)
Node.js
import { writeFileSync } from 'fs'

const dataUri = 'data:image/png;base64,iVBORw0KGgo...'

// Extract MIME type and Base64 payload
const [meta, b64] = dataUri.split(',')
const mime = meta.match(/:(.*?);/)[1]  // → "image/png"

// Decode to Buffer and save
const buffer = Buffer.from(b64, 'base64')
writeFileSync('output.png', buffer)
// → output.png (identical to the original file)

// Validate by checking magic bytes
console.log(buffer.subarray(0, 4))
// PNG → <Buffer 89 50 4e 47>  (\x89PNG)
// JPEG → <Buffer ff d8 ff e0>
CLI (bash)
# Decode a raw Base64 string to an image file (Linux)
echo 'iVBORw0KGgo...' | base64 -d > output.png

# Decode a raw Base64 string to an image file (macOS)
echo 'iVBORw0KGgo...' | base64 -D > output.png

# Extract Base64 from a data URI and decode
echo 'data:image/png;base64,iVBORw0KGgo...' | \
  sed 's/^data:.*base64,//' | base64 -d > output.png

# Identify the image format from the decoded file
file output.png
# → output.png: PNG image data, 64 x 64, 8-bit/color RGBA

자주 묻는 질문

data URI와 원본 Base64 문자열의 차이점은 무엇입니까?
data URI에는 MIME 유형 및 인코딩을 선언하는 접두사가 포함됩니다: data:image/png;base64,iVBORw0KGgo.... 원본 Base64 문자열에는 메타데이터 없이 인코딩된 바이트 (iVBORw0KGgo...)만 포함됩니다. 이 도구는 두 형식을 모두 허용합니다. 원본 문자열을 붙여넣으면 Base64 매직 바이트에서 이미지 형식이 자동으로 감지됩니다.
Base64 디코딩이 이미지 품질을 변경합니까?
아니요. Base64는 바이트를 변경하지 않고 이진 데이터를 ASCII 텍스트로 변환했다가 다시 변환하는 손실 없는 인코딩입니다. 디코딩된 이미지는 원본 파일과 바이트 단위로 동일합니다. 기술하는 품질 차이는 Base64 디코딩 단계가 아니라 이미지 형식 자체 (예: 인코딩 전에 적용된 JPEG 압축)에서 발생합니다.
Base64 이미지의 형식을 어떻게 알 수 있습니까?
문자열이 data:image/png;base64로 시작하면 형식이 MIME 유형에 선언됩니다. 원본 Base64 문자열의 경우 처음 몇 문자를 검사합니다. iVBORw0KGgo는 PNG를 나타냅니다, /9j/는 JPEG를 나타냅니다, R0lGOD는 GIF를 나타냅니다, UklGR은 WebP를 나타냅니다. 이러한 접두사는 각 형식의 매직 바이트에 해당합니다.
Base64 문자열이 디코딩에 실패하는 이유는 무엇입니까?
일반적인 원인으로는 잘린 데이터 (복사 붙여넣기 중 문자열이 잘림), 잘못된 문자 (Base64는 패딩에 A–Z, a–z, 0–9, +, / 및 =를 사용), 포함된 공백 또는 줄 바꿈, 누락되거나 잘못된 형식의 data URI 접두사가 있습니다. 이 도구는 공백을 자동으로 제거하지만 잘린 또는 손상된 데이터는 복구할 수 없습니다.
신뢰할 수 없는 소스에서 Base64 이미지를 디코딩하는 것이 안전합니까?
이 도구는 브라우저 샌드박스에서 이미지를 디코딩하고 렌더링하여 시스템에서 격리합니다. 그러나 SVG 이미지에는 포함된 JavaScript가 포함될 수 있습니다. 최신 브라우저는 img 태그 또는 data URI를 통해 렌더링된 SVG에서 스크립트 실행을 차단하지만 신뢰할 수 없는 소스의 SVG에 주의합니다. 도구는 디코딩된 이미지에서 스크립트를 실행하지 않습니다.
인터넷 연결 없이 Base64 이미지를 디코딩할 수 있습니까?
예, 페이지가 로드된 후입니다. 모든 디코딩은 기본 JavaScript API (atob, Uint8Array, Blob)를 사용하여 브라우저에서 로컬로 실행됩니다. 디코딩 프로세스 중에 네트워크 요청이 만들어지지 않습니다. 도구는 오프라인에서 동일하게 작동합니다.
이 도구가 처리할 수 있는 최대 Base64 문자열 길이는 얼마입니까?
실질적인 한계는 브라우저의 메모리에 따라 다릅니다. 대부분의 최신 브라우저는 몇 메가바이트의 data URI를 문제 없이 처리합니다. 매우 큰 이미지 (인코딩된 10MB 이상)의 경우 더 느린 렌더링을 경험할 수 있습니다. 이 크기에서는 Node.js 또는 Python으로 프로그래밍 방식으로 디코딩하고 파일에 직접 쓰는 것이 브라우저 기반 도구를 사용하는 것보다 더 효율적입니다.