Immich pokazuje złe daty zdjęć po imporcie. Jak to naprawić
Dlaczego zdjęcia lądują w Immich pod złą datą, jak Immich wybiera datę z EXIF i plików towarzyszących i jak naprawić pliki przed importem.
Postawiłeś Immich, wgrałeś bibliotekę, a oś czasu się nie zgadza. Tysiące zdjęć mają datę importu. Stare wakacje wiszą na samej górze. Część dat jest przesunięta o dokładnie kilka godzin.
Jak Immich wybiera datę
Immich czyta metadane każdego pliku i bierze pierwszą datę, jaką znajdzie, w stałej kolejności. W przybliżeniu: plik towarzyszący XMP obok pliku, jeśli jest, potem EXIF DateTimeOriginal, potem CreateDate filmu, a na samym końcu data modyfikacji pliku.
Czyta plik. Nie pyta ciebie. Zdjęcie bez daty w EXIF dostaje więc datę pliku, a data pliku to to, co zostawiło ostatnie kopiowanie, zwykle dzisiejszy dzień. Różnicę wyjaśnia artykuł EXIF date taken vs file modified (po angielsku).
Własne narzędzia Immich do wysyłania, aplikacja mobilna i CLI, przekazują datę modyfikacji pliku. Jeśli ona też jest zła, nic już zdjęcia nie ratuje.
Najczęstsze przyczyny
Google Takeout. Największa z nich. Google usuwa daty EXIF z wielu zdjęć i zapisuje prawdziwą datę w pliku .json obok. Immich nie czyta formatu .json od Google. Wgraj te pliki bezpośrednio, a każdy bez EXIF dostanie datę wysłania. Pełny poradnik dla tego przypadku to Google Photos to Immich (po angielsku).
Komunikatory. WhatsApp i podobne aplikacje usuwają EXIF w całości. Takie zdjęcia mają tylko datę pliku.
Zrzuty ekranu i pobrane obrazy. Pliki PNG i obrazy z sieci rzadko mają datę w EXIF.
Skany. Data skanera, czyli dzień skanowania, a nie dzień zrobienia zdjęcia.
Przesunięcia stref czasowych. Zdjęcie z datą EXIF, ale bez przesunięcia strefy, jest w jednych ścieżkach traktowane jako UTC, a w innych jako czas lokalny. Data jest dobra, godzina nie. Nowsze telefony zapisują znacznik przesunięcia i tego unikają.
Dwa sposoby naprawy
Naprawa w Immich. W interfejsie webowym możesz zaznaczyć zdjęcia i zmienić datę i godzinę, jedno zaznaczenie naraz. Dla kilku zdjęć to w porządku. Dla eksportu Takeout z czterdziestoma tysiącami zdjęć już nie, a poprawka żyje tylko w bazie danych Immich. Wyeksportujesz kiedyś bibliotekę i daty znowu znikną.
Naprawa plików przed importem. Zapisz poprawną datę w EXIF każdego pliku przed wysłaniem. Immich ją odczyta i zrobi to dobrze, podobnie jak każde inne narzędzie, które kiedykolwiek skierujesz na te pliki. To trwała naprawa.
immich-go i kiedy go używać
immich-go to darmowe narzędzie wiersza poleceń do wysyłania, które rozumie Google Takeout. Czyta pliki .json, dopasowuje je do zdjęć i przy wysyłaniu przekazuje do Immich poprawną datę. Jeśli Immich to twoje jedyne miejsce docelowe, a terminal cię nie straszy, to dobre narzędzie, które radzi sobie też z albumami.
Nie zmienia jednak plików. Data trafia do bazy Immich, a nie do zdjęcia. Jeśli kiedyś znowu się przeniesiesz albo skierujesz PhotoPrism lub Apple Photos na te same pliki, zaczynasz od nowa.
Naprawa plików ręcznie
exiftool potrafi zapisać datę z Takeout w EXIF. Polecenie jest kłopotliwe, bo nazwy plików .json od Google na kilka sposobów nie pasują do nazw zdjęć. Działający przykład jest w artykule exiftool: poprawa dat z Google Takeout.
Dla zdjęć bez pliku .json i bez EXIF, ale z dobrą datą pliku, skopiuj datę pliku do środka:
exiftool "-DateTimeOriginal<FileModifyDate" -if 'not $DateTimeOriginal' -r .
Dla folderu, o którym wiesz tylko, z jakiego jest dnia, ustaw datę:
exiftool -DateTimeOriginal="2014:08:10 12:00:00" -overwrite_original .
Potem uruchom ponownie zadanie wyciągania metadanych na stronie administracyjnej Immich albo wgraj pliki jeszcze raz, żeby Immich odczytał nowe wartości.
Z aplikacją
Takeout JSON Metadata Fixer przygotowuje folder, który Immich importuje bez problemów. Zapisuje prawdziwą datę i GPS w każdym pliku, więc Immich czyta je prosto z EXIF.
Daj jej eksport z Takeout, w jednym pliku zip albo w wielu, albo dowolny folder. Dla każdego zdjęcia bierze datę z pliku .json, a jeśli jej nie ma, z EXIF, a potem z daty pliku, i zapisuje wynik w EXIF i w znacznikach czasu pliku. GPS trafia do środka w ten sam sposób. Po drodze można zamienić HEIC na JPG. Zdjęciom bez żadnej daty można nadać jedną datę i miejsce dla całego folderu.
Jeśli to włączysz, zapisuje też plik .json obok każdego pliku wynikowego. Sam Immich ich nie czyta, ale immich-go i inne narzędzia do importu tak, a metadane pozostają czytelne poza jakąkolwiek biblioteką. Potem wgraj folder wynikowy aplikacją Immich, przez CLI albo jako bibliotekę zewnętrzną. Daty są w plikach, więc od razu przychodzą poprawne.
Działa offline na macOS, Windows i Linux. Za darmo do 1000 zdjęć, 19,99 USD jednorazowo za wersję bez limitu.
Najczęstsze pytania
Już zaimportowałem. Muszę zaczynać od nowa?
Niekoniecznie. Napraw pliki na dysku, a potem uruchom zadanie „Extract metadata” dla wszystkich zasobów na stronie administracyjnej Immich. Jeśli pliki zostały wysłane, a nie są w bibliotece zewnętrznej, musisz wgrać naprawione pliki jeszcze raz i usunąć stare kopie, bo Immich trzyma własną kopię.
Dlaczego niektóre daty są przesunięte o kilka godzin?
Strefa czasowa. Data w EXIF nie ma przesunięcia, a Immich traktuje ją jako UTC albo jako czas serwera, zależnie od wersji i ustawień. Nowsze wersje radzą sobie z tym lepiej. Pomaga ustawienie strefy czasowej serwera na tę, w której zrobiono większość zdjęć.
Czy Immich czyta już pliki .json od Google?
W chwili pisania nie bezpośrednio. Czyta pliki towarzyszące XMP. immich-go czyta format Google i zamienia go w locie. Sprawdzaj informacje o wydaniach Immich, bo to się zmienia.
Czy zapis EXIF pogorszy jakość zdjęcia?
Nie. Zapis EXIF zmienia blok metadanych. Skompresowany obraz zostaje nietknięty.