Base64 이미지 변환기

이미지를 Base64 데이터 URI로 변환하거나, Base64 문자열을 붙여넣어 다운로드 가능한 이미지로 되돌립니다 — 모든 처리는 로컬에서 이루어지며 어디에도 업로드되지 않습니다.

조회수 252회

작동 방식

이 도구는 두 방향으로 작동합니다. 이미지 → Base64 모드에서는 브라우저 기본 파일 선택 창으로 파일을 고르면, 도구가 FileReader.readAsDataURL() API로 파일을 읽어 data:image/png;base64,iVBORw0KG...와 같은 완전한 데이터 URI를 생성합니다. 이 값은 한 상자에 표시되고, 접두어 없이 순수 Base64 데이터만 담긴 값이 두 번째 상자에 표시되어 용도에 맞는 형태를 골라 쓸 수 있으며, 각각에 원클릭 복사 버튼이 붙어 있습니다. Base64 → 이미지 모드에서는 전체 데이터 URI 또는 순수 Base64 텍스트만 텍스트 영역에 붙여넣으면 됩니다. 접두어 없이 순수 Base64를 붙여넣으면 도구가 자동으로 data:image/png;base64, 헤더를 추가해 브라우저가 여전히 렌더링할 수 있게 하며, 이후 실시간 <img> 미리보기와 함께 디코딩된 바이트를 실제 이미지 파일로 저장하는 다운로드 버튼이 표시됩니다.

Base64 인코딩은 이진 데이터를 인쇄 가능한 ASCII 문자 64개(A–Z, a–z, 0–9, +, /)만으로 표현하는 방식으로, 본질적으로 이진 데이터인 이미지를 HTML, CSS, JSON, URL처럼 텍스트만 다루는 형식 안에 담을 수 있게 해 줍니다. 이 메커니즘은 고정되어 있고 수학적입니다: 원본 파일의 3바이트(24비트)마다 정확히 4개의 Base64 문자(4 × 6비트)로 변환되며, 입력 길이가 3의 배수가 아니면 =로 채워집니다. 이 "3바이트 입력, 4문자 출력" 비율이 바로 Base64 출력이 원본 이진 데이터보다 항상 약 33% 더 커지는 이유입니다 — 4를 3으로 나누면 약 1.333이며, 이는 근사치나 품질 설정이 아니라 고정된 수학적 오버헤드입니다.

알아두면 좋은 점

이미지를 HTML이나 CSS에 데이터 URI로 직접 삽입하면 실질적인 장점이 있습니다: 별도의 HTTP 요청이 사라지는데, 이는 아이콘, 작은 스프라이트, 또는 외부 이미지가 차단될 수 있는 이메일 템플릿에 넣는 작은 로고처럼 매우 작고 자주 재사용되는 자산에서 중요합니다. 반대로 더 큰 자산에는 단점이 작용합니다: 데이터 URI는 링크된 .png.jpg 파일과 달리 브라우저가 독립적으로 캐싱할 수 없고, 그것을 포함한 HTML/CSS 파일의 크기를 (같은 약 33%만큼) 부풀리며, 인코딩된 블록 전체가 다운로드될 때까지 해당 파일의 렌더링을 막습니다. 대략적인 기준으로, 데이터 URI는 몇 킬로바이트 이하의 자산에 적합하고, 사진이나 히어로 이미지처럼 페이지를 이동할 때마다 캐시되기를 원하는 대상에는 적합하지 않습니다.

MIME 타입 접두어 — data:image/png;base64,...에서 image/png, image/jpeg, image/webp 부분 — 는 장식이 아닙니다. 이는 브라우저(또는 이 문자열을 읽는 다른 프로그램)에게 뒤따르는 바이트를 어떤 디코더에 넘길지 알려주는 역할을 합니다. 이 접두어가 없거나 잘못되어 있으면, 그 자체로는 유효한 Base64 데이터라도 렌더링에 실패하거나 완전히 다른 파일 형식으로 렌더링될 수 있습니다. 바로 이 때문에 이 도구는 접두어 없는 순수 Base64를 붙여넣으면 자동으로 PNG 접두어를 추가합니다 — 합리적인 기본값이지만, 원본 파일이 실제로 JPEG나 WebP였다는 것을 알고 있다면 그에 맞게 바꿔야 합니다.

자주 묻는 질문

Base64 출력이 원본 이미지보다 항상 큰 이유는 무엇인가요?

Base64는 이진 입력의 3바이트마다 4개의 텍스트 문자로 인코딩하므로, 출력은 항상 입력 크기의 약 4/3 — 대략 33% 더 큽니다. 이는 인코딩의 고정된 수학적 특성(인쇄 가능한 문자 하나당 8비트가 아니라 6비트의 정보)이며, 낮은 품질 설정이나 비효율적인 도구 때문이 아닙니다.

이미지가 변환을 위해 서버에 업로드되나요?

아니요. 두 방향 모두 브라우저 안에서만 완전히 처리됩니다: FileReader.readAsDataURL()이 파일을 로컬에서 읽고, 이미지로 되돌리는 디코딩도 로컬에서 이루어집니다. 어디로도 전송되지 않습니다.

일반 이미지 파일 대신 Base64 데이터 URI를 실제로 언제 사용해야 하나요?

아이콘, 작은 UI 스프라이트, HTML 이메일 속 로고처럼 HTTP 요청 하나를 줄이는 이득이 약 33%의 크기 증가를 상쇄하는 작고 자주 재사용되는 자산에 적합합니다. 사진이나 페이지를 넘나들며 브라우저가 독립적으로 캐싱해 주길 바라는 이미지에는 적합하지 않습니다. 인라인 데이터 URI는 이를 포함한 HTML이나 CSS 파일이 로드될 때마다 매번 다시 다운로드되기 때문입니다.

Base64 문자열을 붙여넣었는데 미리보기에 아무것도 나타나지 않아요 — 왜 그런가요?

흔한 원인은 두 가지입니다: 문자열에 MIME 타입 접두어가 없거나(또는 잘못되었거나) — 이 도구는 접두어가 없으면 자동으로 data:image/png;base64,를 추가하지만, 이는 실제로 바이트가 PNG 데이터일 때만 도움이 됩니다 — 또는 Base64 텍스트 자체가 잘리거나 손상된 경우입니다(예: 특정 출처에서 복사할 때 공백이나 줄바꿈이 끼어든 경우). 접두어가 실제 형식과 일치하는지, 문자열 전체를 복사했는지 다시 확인하세요.

"전체 데이터 URI"와 "Base64만" 출력 상자의 차이는 무엇인가요?

전체 데이터 URI(data:image/...;base64,로 시작)는 HTML의 src 속성이나 CSS의 url()에 직접 붙여넣으면 브라우저가 곧바로 렌더링하는 형태입니다. Base64만 표시하는 상자는 이 접두어를 제거한 형태로, 프로그램이나 API, 설정 파일이 순수하게 인코딩된 데이터만 기대하고 타입 정보는 별도로 자체 처리할 때 필요한 형태입니다.

댓글

아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!

비슷한 도구