여행에서 돌아왔는데 HEIC 사진이 200장 있다. Windows 노트북에서는 열리지 않고, 웹 앱은 JPEG을 요구하며, 사진 공유 사이트는 HEIC를 완전히 거부한다. 한 장씩 변환할 수도 있다: 사진당 4번 클릭, 200장이면 800번 클릭, 오후 반나절이 사라진다. 아니면 폴더를 브라우저 탭에 드롭하고 처리되는 동안 자리를 떠나면 된다.
이것이 일괄 변환기가 만들어진 이유이며, 브라우저 기반 변환기는 당신이 사용해 왔던 데스크톱 소프트웨어와는 다르게 작동한다.
일괄 변환의 실제 의미
일괄 변환은 "파일 하나 변환하고, 반복하기"가 아니다. 진정한 일괄 파이프라인은 가능한 경우 세 가지 작업을 병렬로 수행한다:
- 읽기: 각 파일의 헤더를 파싱하여 형식을 확인한다.
.heic확장자는 아무것도 증명하지 못한다. 파이프라인은 처음 12바이트를 읽고,ftyp박스에서heic/heif/mif1을 확인하여 픽셀 데이터를 건드리기 전에 불일치 파일을 거부한다. - 디코드: 소스를 원시 픽셀로 압축 해제한다. HEIC 파일의 경우, 이는 libheif의 WebAssembly 빌드를 실행하는 것을 의미한다. JPEG와 PNG는 브라우저의 네이티브 디코더가 처리한다. 이 단계는 CPU 바운드이며 병목 지점이다.
- 인코드: 원시 픽셀을 대상 형식으로 압축한다. JPG는 품질 90으로 인코딩, PNG는 DEFLATE 사용, WebP는 브라우저 내장 인코더로 처리한다.
데스크톱 소프트웨어도 동일한 세 단계를 수행한다. 차이는 CPU 사이클이 어디서 소비되는가에 있다: 어느 쪽이든 당신의 기기에서 돌아가지만, 브라우저 탭에서는 인스톨러도, 관리자 권한도, 바탕화면에 흩어지는 임시 파일도 없다.
지원되는 형식 조합
모든 형식이 모든 다른 형식으로 잘 변환되는 것은 아니다. 중요한 매트릭스는 다음과 같다:
| 원본 | JPG로 | PNG로 | WebP로 | ICO로 |
|---|---|---|---|---|
| HEIC | 지원 | 지원 | 지원 | 미지원 |
| JPG | 미지원 | 지원 | 지원 | 지원 |
| PNG | 지원 | 지원 | 지원 | 지원 |
| WebP | 지원 | 지원 | 미지원 | 지원 |
| BMP | 지원 | 지원 | 지원 | 지원 |
빈 칸은 기능 누락이 아니다. HEIC에서 ICO로의 변환은 무의미하다: 수 MB의 사진을 256×256 아이콘 파일로 축소하면 사진으로서의 모든 의미를 잃는다. 도구는 무의미한 경로를 건너뛴다.
PDF 페이지는 별도의 파이프라인을 따른다. 각 페이지는 PDF.js를 통해 캔버스에 렌더링된 후 대상 형식으로 인코딩된다. PDF to JPG, PDF to PNG, PDF to WebP 변환기는 모든 페이지를 자동으로 일괄 처리한다.
워크플로 단계별 설명
1. 모든 것을 한 번에 드롭
변환기 페이지를 연다. 파일 관리자에서 폴더를 드롭 존으로 드래그한다. 클릭하여 파일 선택기를 열고 여러 파일을 선택할 수도 있다. Ctrl+A도 여기서 작동한다.
드롭 존은 브라우저의 드래그 이벤트에서 직접 FileList 객체를 읽는다. 업로드는 전혀 발생하지 않는다. 파일은 File 객체로 메모리에 남는다 — 이는 단지 이름, 크기, 확장자로 추측된 MIME 타입을 가진 디스크상의 블롭에 대한 참조일 뿐이다.
2. 유효성 검사 실행
각 파일은 디코딩 전에 검사된다. HEIC 파일의 경우, 검증기가 위에서 설명한 대로 ftyp 박스를 읽는다. 다른 형식의 경우, 브라우저의 createImageBitmap() 호출이 성공(유효한 이미지)하거나 예외를 던진다(손상되었거나 잘못 레이블된 파일).
유효하지 않은 파일은 빨간 마커와 함께 이유가 표시된다: "유효한 HEIC 파일이 아닙니다", "지원되지 않는 형식입니다", "파일이 200 MB를 초과합니다". 이러한 파일들은 나머지 일괄 처리를 차단하지 않는다. 유효한 파일은 처리 대기열에 들어간다.
3. 출력 형식 선택
각 변환기 페이지는 특정 출력 형식을 대상으로 한다. HEIC에서 JPG로가 필요하면 HEIC to JPG 페이지를 사용한다. HEIC에서 PNG로가 필요하다면? HEIC to PNG. 출력 형식은 페이지별로 고정되어 있어 UI가 단순하게 유지된다: 드롭다운도, 혼란도 없다.
품질 설정은 형식별로 다르다. JPG는 품질 슬라이더(10–100, 기본값 90)를 제공한다. PNG는 항상 무손실이므로 슬라이더가 필요 없다. WebP는 JPEG과 다르게 동작하는 품질 슬라이더를 사용한다: 사진 콘텐츠에서 WebP 80은 대략 JPEG 92에 해당한다.
4. 기다리기 (잠시만)
처리 시간은 파일 수, 파일 크기, CPU의 세 가지 요소에 달려 있다. 8코어 현대 노트북은 초당 약 2–4회의 HEIC-to-JPG 변환을 처리한다. 200장의 iPhone 사진 폴더는 2분 이내에 완료된다.
각 파일은 requestAnimationFrame으로 분할된 청크로 실행되어 UI가 응답성을 유지한다. 진행률 표시줄은 바이트 단위가 아닌 파일 단위의 진행률을 보여준다: 각 파일은 크기에 관계없이 한 칸씩 진행된다.
5. 다운로드
두 가지 옵션이 있다:
개별 다운로드: 각 변환된 파일이 개별적으로 다운로드된다. 브라우저의 다운로드 관리자가 이를 네이티브로 처리하며 어디서든 작동한다.
ZIP 아카이브: 모든 변환된 파일이 하나의 .zip으로 패킹된다. 스트리밍 ZIP 구현으로 메모리 내에서 구축되며, 파일은 온더플라이로 압축되고 임시 저장소가 필요 없다.
원본 파일 이름은 확장자만 변경되어 유지된다. IMG_4021.HEIC는 IMG_4021.jpg가 된다.
품질과 크기의 절충
형식 변환은 파일 크기에 대한 선택을 의미한다:
| 변환 | 일반적인 크기 변화 | 품질 참고 사항 |
|---|---|---|
| HEIC → JPG (q90) | 약 2배 큼 | 일반 줌에서 시각적으로 동일 |
| HEIC → PNG | 약 5–8배 큼 | 무손실이지만 사진에는 과잉 |
| HEIC → WebP (q80) | 약 1.2배 큼 | 동등한 품질에서 JPEG보다 작음 |
| PNG → JPG (q90) | 약 3–5배 작음 | 투명도가 흰색 배경으로 변함 |
| BMP → JPG (q90) | 약 10–20배 작음 | BMP는 원시 픽셀 저장, JPG가 압축 |
| JPG → PNG | 약 5–10배 큼 | 품질 향상 없음. 단지 추가 손실 방지 |
HEIC에서 PNG로의 변환은 사람들이 빠지기 쉬운 함정이다. HEIC는 이미 손실 형식이다. 손실을 무손실로 변환해도 품질이 회복되지 않는다. 현재 상태를 5배의 파일 크기로 동결할 뿐이다. 웹에 올릴 사진이라면, HEIC에서 JPG 또는 WebP가 정직한 경로다. 편집기에 넣을 사진이라면, PNG는 의미가 있다 — 이후 저장에서 세대 손실을 방지하기 때문이다. 동일한 논리가 모든 상황에 적용된다. 완전한 설명은 손실 vs 무손실 압축 가이드를 참조.
브라우저 vs 데스크톱 vs 서버
| 브라우저 기반 | 데스크톱 소프트웨어 | 서버/클라우드 | |
|---|---|---|---|
| 설치 | 필요 없음 | 다운로드 + 설치 | 필요 없음 |
| 프라이버시 | 파일이 로컬에 유지됨 | 파일이 로컬에 유지됨 | 파일이 서버에 업로드됨 |
| 속도 | WebAssembly (네이티브에 근접) | 네이티브 | 네트워크 업로드 + 대기열 + 다운로드 |
| 일괄 크기 | 메모리 제한 (~500+ 파일) | 디스크 제한 | 무료 티어에서 종종 제한됨 |
| 업데이트 | 항상 최신 | 수동 업데이트 | 항상 최신 |
브라우저 기반 변환기는 대부분의 사람에게 최적의 위치에 있다: 설치 불필요, 업로드 불필요, 그리고 속도는 충분히 빨라서 — 최근 5년 내에 제조된 어떤 기기에서든 네이티브와의 차이는 거의 감지할 수 없다.
WebAssembly 세부 사항이 중요하다. HEIC 디코더는 WASM 샌드박스 내에서 실행되는 컴파일된 C 라이브러리(libheif)이다. 파일 시스템 접근도, 네트워크 접근도, 데이터를 어디로든 보낼 방법도 없다. 브라우저는 이러한 경계를 애플리케이션 레벨이 아닌 엔진 레벨에서 강제한다. 이 아키텍처에 대한 자세한 내용은 WebAssembly 해설과 브라우저 프라이버시 심층 분석을 참조.
일괄 변환이 실패하는 경우
몇 가지 요인이 일괄 실행을 중단시킨다:
- 잘못된 변환기에 혼합 형식 투입. JPEG를 HEIC-to-JPG 페이지에 드롭하는 경우. 검증기가 이를 감지하고 건너뛴다. 거부된 파일에는 명확한 레이블이 붙어 올바른 변환기로 재지정할 수 있다.
- 초대형 배치에서 메모리 고갈. 2,000장의 24 MP 원시 파일을 처리하면 결국 브라우저 메모리 한계에 도달한다. 해결책은 배치를 수백 개씩 청크로 나누는 것이다. 일반적인 스마트폰 사진(12 MP, 약 2 MB HEIC)의 경우, 실행당 500장 이상도 문제없다.
- Safari의 다운로드 동작. Safari는 Chrome이나 Firefox보다 동시 다운로드를 더 공격적으로 제한한다. 개별 다운로드는 문제없이 작동한다. ZIP 다운로드는 이 문제를 완전히 우회한다: 파일 하나, 동시성 문제 없음.
관련 도구
이 사이트의 모든 이미지 변환기는 일괄 처리를 지원한다:
- HEIC 변환: HEIC to JPG · HEIC to PNG · HEIC to WebP
- JPG 변환: JPG to PNG · JPG to WebP · JPG to ICO
- PNG 변환: PNG to JPG · PNG to WebP · PNG to ICO
- WebP 변환: WebP to JPG · WebP to PNG · WebP to ICO
- BMP 변환: BMP to JPG · BMP to PNG · BMP to WebP · BMP to ICO
- PDF 페이지 추출: PDF to JPG · PDF to PNG · PDF to WebP
계정 불필요. 파일당 과금 없음. 폴더를 드롭하고 결과를 다운로드하면 끝.

