← 모두의 툴

iPhone 사진이 브라우저에서 안 열리는 이유

가이드 · 2026.08.20 최종 확인

아이폰으로 찍은 사진을 노트북 폴더에서 더블클릭했을 때, 미리보기가 회색 아이콘으로만 뜨거나 "지원하지 않는 형식"이라는 메시지를 본 적이 있을 것입니다. JPG와 똑같은 사진인데 왜 이런 일이 생기는지, 그리고 웹 브라우저에서 파일을 서버로 보내지 않고도 이걸 열 수 있는 이유가 무엇인지 원리를 짚어봅니다.

1. HEIC는 사실 사진 압축이 아니라 동영상 압축을 재활용한 것

HEIC(High Efficiency Image Container)는 iOS 11부터 애플 기기의 기본 사진 저장 형식입니다. 핵심은 이미지 자체를 위한 새 압축 알고리즘을 개발한 게 아니라, HEVC(H.265)라는 동영상 코덱의 인트라 프레임(키프레임) 압축 기술을 정지 이미지 한 장에 그대로 적용했다는 점입니다. 동영상 코덱은 정지 이미지 코덱보다 훨씬 정교한 압축 기법을 쓰기 때문에, 같은 화질에서 JPG보다 파일 크기가 40~50% 작아지는 효과를 얻습니다.

2. 왜 Chrome·Firefox는 기본 지원을 안 하는가

문제는 HEVC가 표준화 기구(MPEG-LA 등)에 등록된 특허 코덱이라는 점입니다. 코덱을 브라우저에 내장하려면 라이선스 로열티를 지불해야 하는데, 오픈소스 기반인 Chrome·Firefox는 이 비용 구조를 받아들이지 않아 기본적으로 HEVC 디코더를 탑재하지 않습니다. 반면 애플은 자사 생태계(라이선스 비용을 이미 지불한 macOS·iOS)에서만 HEIC를 문제없이 열어줍니다. 그 결과 같은 사진이라도 아이폰·맥에서는 정상적으로 보이고, 윈도우의 Chrome이나 안드로이드 갤러리 앱에서는 열리지 않는 비대칭이 생깁니다.

3. 이 도구는 그 특허 코덱을 어떻게 우회하는가

HEIC to JPG 변환기는 브라우저 내장 디코더에 의존하지 않고, heic2any라는 자바스크립트 라이브러리를 CDN(jsdelivr)에서 불러와 사용합니다. 이 라이브러리는 오픈소스 HEVC/HEIF 디코더인 libheif를 WebAssembly(WASM)로 컴파일해 내장하고 있어, 브라우저가 코덱을 몰라도 자바스크립트 엔진 위에서 직접 HEIC 비트스트림을 소프트웨어적으로 해석합니다. 디코딩된 픽셀 데이터는 <canvas>에 렌더링된 뒤 원하는 형식(JPG·PNG·WebP)으로 다시 인코딩됩니다. 이 모든 과정이 사용자 브라우저 메모리 안에서 끝나기 때문에 원본 사진이 서버로 전송되지 않는다는 부수 효과도 생깁니다.

예시: 아이폰으로 찍은 4032×3024 해상도 HEIC 파일이 약 1.8MB라면, 같은 해상도의 JPG로 변환 시 품질 설정(50~100%)에 따라 대략 2.5MB(품질 95%)~1.2MB(품질 60%) 사이로 나옵니다. HEVC 압축 효율이 JPG보다 높기 때문에, 변환 후 화질을 비슷하게 맞추면 오히려 파일 용량이 늘어나는 경우가 흔합니다.

4. Live Photo·버스트샷처럼 한 파일에 여러 이미지가 들어있는 경우

HEIC 컨테이너는 이름 그대로 여러 이미지를 하나의 파일에 담을 수 있는 구조라, 버스트 촬영이나 심도 데이터(뎁스 맵)가 함께 들어 있는 경우가 있습니다. 이 도구는 그중 대표 이미지(주 프레임) 한 장만 변환 대상으로 삼습니다. 참고로 아이폰의 라이브 포토는 정지 이미지(HEIC)와 짧은 동영상(.mov)이 별도 파일 쌍으로 저장되는 구조이므로, 동영상 부분은 이 변환기의 처리 범위 밖입니다.

5. 근본적으로 다시 겪지 않으려면

매번 변환하는 대신, 아이폰 설정 → 카메라 → 포맷에서 "가장 호환 가능한 포맷"을 선택하면 앞으로 촬영하는 사진이 애초에 JPG로 저장됩니다. 다만 HEIC 대비 파일 용량이 커지고, 이미 촬영해둔 과거 사진은 이 설정과 무관하게 그대로 HEIC로 남아 있으므로 별도 변환이 필요합니다.

자주 묻는 질문

Q. 윈도우에서 아예 HEIC를 볼 방법이 없나요?

Microsoft 스토어에서 "HEVC 비디오 확장 프로그램"을 설치하면 파일 탐색기에서 미리보기가 가능해집니다. 다만 유료이며, 웹에서 곧바로 보고 변환하려면 이 도구처럼 브라우저에서 직접 디코딩하는 방식이 더 간편합니다.

Q. 변환하면 화질이 떨어지나요?

JPG·WebP 출력은 손실 압축이라 품질 슬라이더 값에 따라 약간의 화질 저하가 있을 수 있습니다. PNG로 출력하면 무손실이라 원본 픽셀이 그대로 보존되지만 파일 용량은 가장 큽니다.

Q. 여러 장을 한 번에 변환할 수 있나요?

네. 여러 HEIC 파일을 한 번에 선택하거나 드래그&드롭하면 동시에 변환되며, 결과 목록에 파일별로 독립적으로 표시됩니다.

Q. 파일이 서버에 업로드되나요?

아니요. libheif WASM 모듈이 브라우저 메모리 안에서 디코딩·재인코딩을 모두 수행하므로 파일이 네트워크로 전송되지 않습니다.