이 페이지의 코드가 시작되지 않았습니다.

index.html을 폴더에서 바로 열면 브라우저가 JavaScript 모듈을 막습니다. 그래서 사진을 골라도 아무 일도 일어나지 않아요. 폴더를 http로 띄워서 여세요:

powershell -ExecutionPolicy Bypass -File serve.ps1

그런 다음 http://localhost:8080/을 여세요.

HEIC를 JPG로 — 아이폰 사진 변환

아이폰이 만드는 사진을, 아무 데서나 열리는 형식으로.

언어: 한국어
소스 보기
사진은 절대 업로드되지 않습니다. 서버가 아예 없으니까요.

디코딩은 내 브라우저가 내 기기의 성능으로 합니다. HEIC는 브라우저가 혼자서는 열지 못하는 유일한 사진 형식이라, 이 페이지가 디코더를 함께 싣고 옵니다. 1.4 MB쯤 되고, 이 사이트에서 제공되며, 첫 방문 이후에는 캐시됩니다. 다른 HEIC 변환기가 하나같이 업로드를 요구하는 이유가 바로 이것입니다. 코덱을 서버에 두었으니 사진이 거기까지 가야 하는 거죠. 이 도구는 코덱을 대신 여기에 둡니다. 이 페이지에는 네트워크 기능이 아예 없고, 반대편에 사진을 받아 줄 서버도 없습니다.

실시간 확인: 확인 중…

오프라인: 확인 중…

그냥 믿지 마시고 직접 확인해 보세요. 개발자 도구의 '네트워크' 탭을 켜 놓고 사진을 변환해 보십시오. 이 페이지 자신의 파일들이 불려 오는 것이 보이고 그중에 디코더도 있겠지만, 사진이나 미리보기, 파일 이름, 고른 파일의 단 1바이트를 실어 나르는 요청은 하나도 없습니다. 아니면 페이지를 한 번 불러온 뒤 인터넷을 끊고 폴더 하나를 통째로 변환해 보셔도 됩니다.

1 HEIC 사진 고르기

휴대폰에서 바로 꺼낸 것이든, 백업에서 나온 것이든, 메모리 카드에서 복사한 것이든 좋습니다. 파일을 읽는 것도 여기, 이 기기이고, 사진을 디코딩하는 것도 여기입니다 — 이 페이지에는 업로드 단계가 없고 뒤에 서버도 없습니다.

2 무엇을 돌려받을지 정하기

날짜와 카메라, 설정 유지 휴대폰이 쓴 그대로 옮기기 때문에, 변환한 사진이 변환한 날이 아니라 찍은 날 기준으로 정렬됩니다. 사진에 GPS 좌표가 있다면 그것도 함께 갑니다. 어느 사진이 그런지는 위 목록에 적혀 있고요. 이 항목을 끄면 JPEG에는 사진 말고 아무것도 들어가지 않습니다.

어느 쪽을 고르든 여기서 누군가에게 읽혀 나가는 것은 없습니다. 이 선택이 정하는 것은 돌려받는 파일에 무엇이 들어가느냐이지, 이 페이지가 그걸로 무엇을 하느냐가 아닙니다. 태그를 자세히 들여다보거나 이미 JPEG인 사진에서 태그를 지우고 싶다면 EXIF 확인 및 제거가 그 일을 하는 도구입니다.

형식
92

사진의 세부 정보

3 변환

Markdown으로 보기

HEIC 사진을 JPG로 바꾸는 방법

  1. HEIC 사진을 고릅니다. 휴대폰 백업이든 바탕화면 폴더든, 선택 영역에 끌어다 놓거나 직접 골라 주세요. 브라우저가 디스크에서 읽고, 그동안 어디로도 아무것도 나가지 않습니다. 목록에 각 파일이 무엇이고 안에 무엇이 들었는지가 적힙니다.
  2. 사진이 무엇을 담고 있는지 확인합니다. 각 줄에 촬영 날짜와 카메라가 적히고, 그 파일에 GPS 좌표가 들어 있는지는 눈에 띄라고 초록색으로 적힙니다. 사진을 디코딩하지 않고 컨테이너에서 읽어 내므로 비용이 들지 않고 곧바로 나타납니다.
  3. 형식을 고르고, 세부 정보를 어떻게 할지 정합니다. 특별한 이유가 없다면 JPEG입니다. 어디서나 열리는 형식이고, 변환하는 목적도 바로 그것이니까요. 화질 슬라이더는 92에 놓여 있는데, 사진을 원본과 구별하기 어려운 설정입니다. 체크박스는 날짜와 카메라, 위치가 함께 갈지를 정합니다.
  4. "변환"을 누르고 내려받습니다. 디코더는 첫 변환 때 1.4 MB쯤 도착하고, 그것도 딱 한 번뿐입니다. 그 뒤로는 모든 사진이 내 기기에서 디코딩되고 쓰입니다. 파일이 하나면 내려받기 버튼이, 여러 개면 zip도 함께 나옵니다.

자세한 설명

휴대폰이 저장한 사진, 그리고 아무것도 열지 못하는 형식 아이폰은 사진을 HEIC로 저장하는데, 인터넷의 절반은 그것을 열지 못합니다. 이 형식이 무엇인지, 왜 Safari만 디코딩하는지, 변환이 사진에서 무엇을 앗아 가는지, 그리고 사진을 누구에게도 업로드하지 않고 변환하는 방법.

자주 묻는 질문

제 사진이 어딘가로 업로드되나요?

아닙니다. 파일을 읽고 디코딩하고 쓰는 일은 내 기기에서 도는 내 브라우저가 합니다. 이 도구에는 네트워크 기능이 하나도 없어서 무언가를 가져오지도, 보내지도 않습니다. 이 페이지의 Content-Security-Policy에 연결해도 되는 주소가 전부 적혀 있는데, 그중 이 사이트 것은 하나도 없습니다. 실제로 불려 오는 것은 디코더 하나뿐이고, 그것도 이 사이트에서, 한 번, 내 사진이 관여하기 전에 옵니다.

이 페이지는 왜 처음에 1.4 MB를 내려받나요?

HEIC가 브라우저로 열 수 없는 유일한 사진 형식이기 때문입니다. 박스 컨테이너에 담긴 HEVC 프레임이고, 애플 하드웨어의 Safari에만 디코더가 있습니다. Chrome, Firefox, Edge는 그냥 거부합니다. 그래서 HEIC 변환기는 어딘가에서 디코더를 구해야 하는데, 올 곳은 두 군데뿐입니다. 서버 아니면 페이지. 다른 변환기는 전부 서버를 골랐고, 그래서 하나같이 사진을 업로드받아야 합니다. 이 도구는 대신 WebAssembly로 컴파일한 libheif를 싣고 다닙니다. 이 사이트에서 제공되고, 첫 방문 이후에는 캐시되며, 사진이 아무 데도 가지 않는 대가는 그것이 전부입니다.

JPEG에 날짜와 카메라, 위치가 남나요?

원하신다면 남고, 페이지의 체크박스로 정합니다. 켜 두면 EXIF 블록을 HEIC에서 꺼내 휴대폰이 쓴 그대로 JPEG에 써 넣습니다. 그래서 변환한 사진이 변환한 날이 아니라 찍은 날 기준으로 정렬됩니다. HEIC 변환기를 두고 가장 흔히 나오는 불만이 바로 그거니까요. 딱 한 태그만 바뀝니다. 방향 태그를 "똑바로"로 맞추는데, 회전이 이미 픽셀에 적용되어 있어서 뷰어가 한 번 더 적용하면 세로 사진이 전부 옆으로 눕기 때문입니다. 체크박스를 끄면 JPEG에는 사진 말고 아무것도 들어가지 않습니다.

GPS 좌표를 지워 주나요?

좌표가 있다고 알려 드리고, 그다음은 시키시는 대로 합니다. 무엇을 변환하기 전에 각 사진 줄에 좌표가 들어 있는지가 적히는데, 휴대폰도 그 정도는 해 주지 않습니다. "날짜, 카메라, 설정 유지"를 끄면 나머지와 함께 좌표도 JPEG에서 빠지고, 켜 두면 그대로 옮겨집니다. 태그를 자세히 들여다보거나 이미 JPEG인 사진에서 태그를 지우고 싶다면 EXIF 확인 및 제거가 그 일을 하는 도구이고, 사진을 다시 압축하지 않고 해냅니다.

사진이 다시 압축되나요?

됩니다. 그럴 수밖에 없습니다. HEIC와 JPEG는 다른 코덱이라, 사진을 디코딩했다가 다시 인코딩하지 않고는 한쪽에서 다른 쪽으로 갈 방법이 없습니다. 정하실 수 있는 것은 그 대가를 얼마로 할지입니다. 화질 슬라이더의 기본값은 92인데, 사진을 원본과 구별하기가 아주 어려운 값입니다. 손실을 전혀 원하지 않고 파일이 5~10배 커져도 괜찮다면 PNG도 고를 수 있습니다.

이름은 .jpg인데 실은 HEIC라면요?

그래도 됩니다. 여기 놓인 파일은 이름이 아니라 첫 바이트로 판별합니다. 이름은 그 파일을 마지막으로 만진 앱이 정한 것일 뿐이고, ".jpg"라는 이름으로 도착한 HEIC야말로 사람들이 이런 도구를 찾게 되는 가장 흔한 경로 가운데 하나입니다. 진짜 JPEG나 PNG인 파일은 자기 자신의 사본으로 변환되는 대신 그렇다는 메시지와 함께 거부됩니다.

라이브 포토나 연사도 변환되나요?

그 안의 정지 사진은 됩니다. HEIC 하나에 사진이 여러 장 들어갈 수 있는데, 들어 있는 것을 전부 변환하고 원본 이름 뒤에 번호를 붙여 이름 짓습니다. 라이브 포토의 영상 쪽은 휴대폰이 HEIC 옆에 따로 두는 별개의 파일이라, 여기 변환할 대상으로 들어오지 않습니다. 깊이 맵과 미리보기는 컨테이너 안에 있지만 누가 달라고 한 사진이 아니므로 그대로 둡니다.

제 AVIF는 왜 안 받나요?

할 일이 없기 때문입니다. AVIF는 HEIC와 같은 컨테이너에 HEVC 대신 AV1이 들어간 것이고, 요즘 브라우저는 전부 그걸 자체적으로 디코딩합니다. 그러니 변환기가 있지도 않은 문제를 풀겠다고 1메가바이트짜리 엔진을 싣고 다니는 셈이 됩니다. AVIF를 JPEG로 만들어야 한다면 이미지 압축과 이미지 크기 조절이 둘 다 브라우저가 이미 가진 디코더로 AVIF를 읽고 JPEG로 씁니다.

무료인가요? 가입해야 하나요?

무료이고 계정도, 로그인도, 체험판도, 워터마크도 없습니다. 파일 개수나 용량 제한도 없습니다. 그 값을 치를 서버가 없으니까요. 작업은 내 기기에서 일어납니다. 이 사이트는 광고로 유지되는데, 그 광고에도 내 사진에 관한 것은 넘어가지 않습니다.

오프라인에서도 되나요?

됩니다. 디코더까지 포함해서요. 페이지를 한 번 불러온 다음 인터넷을 끊어도 사진 작업이 이전과 똑같이 이어집니다. 아무것도 업로드되지 않는다는 가장 강력한 증명이기도 합니다. HEIC를 어딘가로 보내서 디코딩하는 변환기라면 선을 뽑는 순간 멈출 텐데, 이건 멈추지 않으니까요.