Takeout JSON
KO

Immich에 올린 사진 날짜가 틀릴 때, 원인과 고치는 방법

Immich 타임라인에서 사진이 올린 날로 몰리는 이유입니다. Immich가 EXIF와 사이드카에서 날짜를 고르는 순서, 올리기 전에 파일을 고치는 방법을 설명합니다.

Immich를 설치하고 라이브러리를 올렸는데 타임라인이 엉망입니다. 사진 수천 장이 올린 날짜에 몰려 있고, 옛날 여행 사진이 맨 위에 있습니다. 어떤 사진은 딱 몇 시간씩 어긋나 있습니다.

Immich는 날짜를 어떻게 고르나요?

Immich는 각 파일의 메타데이터를 읽고, 정해진 순서대로 처음 찾은 날짜를 씁니다. 대략 이런 순서입니다. 파일 옆에 XMP 사이드카가 있으면 그것, 다음은 EXIF DateTimeOriginal, 다음은 동영상의 CreateDate, 마지막으로 파일의 수정한 날짜입니다.

Immich는 파일을 읽을 뿐 사용자에게 묻지 않습니다. 그래서 EXIF 날짜가 없는 사진은 파일 날짜를 받고, 파일 날짜는 마지막 복사 작업이 남긴 값, 대개 오늘입니다. 두 날짜의 차이는 찍은 날짜와 수정한 날짜에 설명했습니다.

Immich의 업로더인 모바일 앱과 CLI는 파일의 수정한 날짜를 함께 보냅니다. 그 날짜마저 틀렸다면 사진을 구할 정보가 남아 있지 않습니다.

흔한 원인

구글 테이크아웃. 가장 큰 원인입니다. 구글은 많은 사진에서 EXIF 날짜를 빼고, 진짜 날짜를 파일 옆의 .json 사이드카에 둡니다. Immich는 구글의 .json 형식을 읽지 않습니다. 그대로 올리면 EXIF가 없는 사진은 전부 올린 날짜를 받습니다. 이 경우의 전체 안내는 구글 포토에서 Immich로 옮기기에 있습니다.

메신저 앱. 카카오톡이나 왓츠앱 같은 앱은 EXIF를 통째로 지웁니다. 그렇게 받은 사진에는 파일 날짜만 있습니다. 카카오톡 사진 날짜도 참고하십시오.

스크린샷과 다운로드한 이미지. PNG나 웹에서 받은 이미지는 EXIF 날짜가 거의 없습니다.

스캔. 스캐너가 쓴 날짜는 스캔한 날이지 사진을 찍은 날이 아닙니다.

시간대. EXIF 날짜는 있지만 시간대 정보가 없는 사진은, 경로에 따라 UTC로 취급되기도 하고 현지 시각으로 취급되기도 합니다. 날짜는 맞는데 시간이 어긋납니다. 최신 휴대폰은 시간대 태그를 함께 써서 이 문제를 피합니다.

고치는 방법은 두 가지

Immich 안에서 고치기. 웹 화면에서 사진을 선택하고 날짜와 시간을 수정할 수 있습니다. 한 번에 한 묶음씩입니다. 몇 장이면 괜찮습니다. 테이크아웃 4만 장이면 무리이고, 고친 값은 Immich 데이터베이스에만 있습니다. 나중에 라이브러리를 내보내면 날짜는 다시 사라집니다.

파일을 먼저 고치기. 올리기 전에 각 파일의 EXIF에 올바른 날짜를 씁니다. Immich가 그것을 읽어 맞게 표시하고, 앞으로 그 파일을 여는 다른 모든 도구도 마찬가지입니다. 오래가는 해결책은 이쪽입니다.

immich-go는 언제 쓰나요?

immich-go는 구글 테이크아웃을 이해하는 무료 명령줄 업로더입니다. .json 사이드카를 읽고 파일과 짝지어, 올릴 때 올바른 날짜를 Immich에 함께 보냅니다. 목적지가 Immich 하나뿐이고 터미널이 편하다면 좋은 도구이고, 앨범도 처리합니다.

다만 파일은 바꾸지 않습니다. 날짜는 사진이 아니라 Immich 데이터베이스에 들어갑니다. 다시 이사를 가거나, PhotoPrism이나 애플 사진을 같은 파일에 연결하면 처음부터 다시 해야 합니다.

손으로 파일 고치기

exiftool로 테이크아웃 날짜를 EXIF에 쓸 수 있습니다. 구글의 사이드카 이름이 여러 방식으로 사진 이름과 어긋나서 명령이 까다롭습니다. 예시는 exiftool로 테이크아웃 날짜 고치기에 있습니다.

사이드카도 EXIF도 없지만 파일 날짜는 맞는 사진이라면, 파일 날짜를 EXIF로 복사합니다.

exiftool "-DateTimeOriginal<FileModifyDate" -if 'not $DateTimeOriginal' -r .

날짜만 알고 나머지는 모르는 폴더라면 직접 지정합니다.

exiftool -DateTimeOriginal="2014:08:10 12:00:00" -overwrite_original .

그다음 Immich 관리 화면에서 메타데이터 추출 작업을 다시 돌리거나 다시 올려서 새 값을 읽게 합니다.

앱으로 하기

Takeout JSON Metadata Fixer는 Immich가 깔끔하게 가져가는 폴더를 만들어 줍니다. 모든 파일에 실제 날짜와 GPS를 써 넣으므로 Immich가 EXIF에서 바로 읽습니다.

zip 하나든 여러 개든 테이크아웃 내보내기를 넣어도 되고, 아무 폴더나 넣어도 됩니다. 사진마다 .json 사이드카의 날짜를 쓰고, 없으면 EXIF, 그것도 없으면 파일 날짜를 씁니다. 결과는 파일의 EXIF와 타임스탬프에 들어갑니다. GPS도 같은 방식입니다. 가는 길에 HEIC를 JPG로 바꿀 수 있습니다. 날짜가 아예 없는 사진은 폴더 단위로 날짜와 장소를 하나 정해 줄 수 있습니다.

원하면 결과 파일마다 .json 사이드카도 함께 씁니다. Immich 자체는 읽지 않지만 immich-go와 다른 가져오기 도구는 읽고, 어떤 라이브러리 밖에서도 메타데이터를 읽을 수 있게 남겨 둡니다. 그다음 결과 폴더를 Immich 앱, CLI, 외부 라이브러리 중 무엇으로든 올리면 됩니다. 날짜가 파일 안에 있으니 처음부터 맞게 들어갑니다.

윈도우, 맥, 리눅스에서 오프라인으로 동작합니다. 처음 1000장은 무료이고, 무제한은 19.99달러 한 번입니다.

자주 묻는 질문

이미 올렸는데 처음부터 다시 해야 하나요?

꼭 그렇지는 않습니다. 디스크의 파일을 고친 뒤 Immich 관리 화면에서 모든 항목에 대해 "메타데이터 추출(Extract metadata)" 작업을 돌리십시오. 외부 라이브러리가 아니라 업로드한 파일이라면 Immich가 자기 사본을 갖고 있으므로, 고친 파일을 다시 올리고 옛 사본을 지워야 합니다.

왜 일부 날짜가 몇 시간 어긋나나요?

시간대 때문입니다. EXIF 날짜에는 시간대가 없고, Immich는 버전과 설정에 따라 그것을 UTC로 보거나 서버 시각으로 봅니다. 최신 버전은 더 잘 처리합니다. 서버 시간대를 대부분의 사진을 찍은 곳에 맞추면 도움이 됩니다. 9시간 차이 나는 이유에 설명이 있습니다.

이제 Immich가 구글의 .json을 읽나요?

이 글을 쓰는 시점에는 직접 읽지 않습니다. XMP 사이드카는 읽습니다. immich-go는 구글 형식을 읽어 즉석에서 변환합니다. 바뀔 수 있으니 Immich 릴리스 노트를 확인하십시오.

EXIF를 고치면 화질이 바뀌나요?

아니요. EXIF를 쓰는 것은 메타데이터 블록만 고치는 일입니다. 압축된 이미지는 건드리지 않습니다.