Immich toont de verkeerde datum na import: de oplossing
Waarom foto's in Immich op de verkeerde dag belanden, hoe Immich een datum kiest uit EXIF en sidecarbestanden, en hoe je de bestanden herstelt vóór de import.
Je hebt Immich ingericht, je bibliotheek geüpload, en de tijdlijn klopt niet. Duizenden foto's hebben de datum van de import. Oude vakanties staan bovenaan. Sommige tijden zitten er precies een paar uur naast.
Hoe Immich een datum kiest
Immich leest de metadata van elk bestand en neemt de eerste datum die het vindt, in een vaste volgorde. Grofweg: een XMP-sidecarbestand naast het bestand als dat er is, dan de EXIF-tag DateTimeOriginal, dan de CreateDate van een video, en als laatste redmiddel de wijzigingsdatum van het bestand.
Immich leest het bestand. Het vraagt het niet aan jou. Een foto zonder EXIF-datum krijgt dus de bestandsdatum, en die is wat je laatste kopieeractie ervan heeft gemaakt, meestal vandaag. EXIF date taken vs file modified (Engels) legt het verschil uit.
De eigen uploaders van Immich, de mobiele app en de CLI, geven de wijzigingsdatum van het bestand door. Is die ook fout, dan is er niets meer dat de foto redt.
De gewone oorzaken
Google Takeout. Dit is de grootste. Google haalt bij veel foto's de EXIF-datum weg en zet de echte datum in een .json-sidecarbestand naast het bestand. Immich leest het .json-formaat van Google niet. Upload je die bestanden rechtstreeks, dan krijgt elk bestand zonder EXIF de uploaddatum. Google Photos export to Immich (Engels) is de volledige gids voor dat geval. Waarom Takeout dit doet, lees je in Google Takeout-foto's met de verkeerde datum.
Chat-apps. WhatsApp en soortgenoten halen de EXIF helemaal weg. Die foto's hebben alleen een bestandsdatum.
Schermafbeeldingen en downloads. PNG's en afbeeldingen van het web hebben zelden een EXIF-datum.
Scans. De datum van de scanner, dus wanneer je hebt gescand, niet wanneer de foto is gemaakt.
Verschoven tijdzones. Een foto met een EXIF-datum maar zonder tijdzoneverschil wordt op sommige plekken als UTC behandeld en op andere als lokale tijd. De datum klopt, het uur niet. Nieuwere telefoons schrijven een tag met het tijdzoneverschil en hebben dit probleem niet.
De twee manieren om het te herstellen
Herstellen in Immich. In de webinterface kun je foto's selecteren en de datum en tijd aanpassen, één selectie tegelijk. Voor een paar foto's is dat prima. Voor een Takeout-export van veertigduizend foto's niet, en de verbetering staat dan alleen in de database van Immich. Exporteer je de bibliotheek later, dan zijn de datums weer weg.
Eerst de bestanden herstellen. Schrijf de juiste datum in de EXIF van elk bestand voordat je uploadt. Immich leest hem en krijgt het goed, en elk ander programma dat je ooit op die bestanden loslaat ook. Dit is de oplossing die blijft.
immich-go, en wanneer je het gebruikt
immich-go is een gratis uploader voor de opdrachtregel die Google Takeout begrijpt. Het leest de .json-sidecarbestanden, koppelt ze aan de bestanden en stuurt de juiste datum met de upload mee naar Immich. Is Immich je enige bestemming en kun je met een terminal overweg, dan is het een goed programma, en het kan ook albums aan.
Wat het niet doet, is de bestanden veranderen. De datum gaat in de database van Immich, niet in de foto. Verhuis je ooit weer, of laat je PhotoPrism of Apple Foto's op dezelfde bestanden los, dan begin je opnieuw.
De bestanden met de hand herstellen
exiftool kan de Takeout-datum in de EXIF schrijven. De opdracht is lastig, omdat de sidecarnamen van Google op meerdere manieren niet overeenkomen met de fotonamen. Een uitgewerkt voorbeeld staat in de handleiding voor exiftool.
Voor foto's zonder sidecarbestand en zonder EXIF, maar met een juiste bestandsdatum, kopieer je de bestandsdatum erin:
exiftool "-DateTimeOriginal<FileModifyDate" -if 'not $DateTimeOriginal' -r .
Voor een map waarvan je de datum weet en verder niets, stel je hem in:
exiftool -DateTimeOriginal="2014:08:10 12:00:00" -overwrite_original .
Laat daarna de taak voor het uitlezen van metadata opnieuw draaien vanaf de beheerpagina van Immich, of upload opnieuw, zodat Immich de nieuwe waarden leest.
Met de app
Takeout JSON Metadata Fixer maakt een map klaar die Immich zonder problemen importeert. Hij schrijft de echte datum en GPS in elk bestand, zodat Immich ze direct uit de EXIF leest.
Geef hem een Takeout-export, in één zip of in veel, of een willekeurige map. Voor elke foto neemt hij de datum uit het .json-sidecarbestand, valt terug op de EXIF en daarna op de bestandsdatum, en schrijft het resultaat in de EXIF en de tijdstempels van het bestand. GPS gaat er op dezelfde manier in. HEIC kan onderweg worden omgezet naar JPG. Foto's zonder enige datum kun je per map één datum en plaats geven.
Als je die schakelaar aanzet, schrijft hij ook een .json-sidecarbestand naast elk bestand dat eruit komt. Immich zelf leest die niet, maar immich-go en andere importprogramma's wel, en zo blijven de metadata leesbaar buiten welke bibliotheek dan ook. Upload daarna de map met de Immich-app, de CLI of als externe bibliotheek. De datums staan in de bestanden, dus ze komen de eerste keer meteen goed aan.
Offline op macOS, Windows en Linux. Gratis voor 1000 foto's, eenmalig $ 19,99 voor onbeperkt.
Wil je de hele route vanaf Google zien, van export tot map, lees dan Google Foto's downloaden met Takeout: het stappenplan.
Veelgestelde vragen
Ik heb al geïmporteerd. Moet ik opnieuw beginnen?
Niet per se. Herstel de bestanden op de schijf en laat dan vanaf de beheerpagina van Immich de taak "Extract metadata" draaien voor alle bestanden. Zijn de bestanden geüpload in plaats van als externe bibliotheek gekoppeld, dan moet je de herstelde bestanden opnieuw uploaden en de oude kopieën verwijderen, want Immich bewaart een eigen kopie.
Waarom zitten sommige datums er een paar uur naast?
De tijdzone. De EXIF-datum heeft geen tijdzoneverschil, en Immich behandelt hem als UTC of als servertijd, afhankelijk van de versie en de instellingen. Nieuwere versies gaan hier beter mee om. Het helpt om de tijdzone van de server gelijk te zetten met de plek waar de meeste foto's zijn gemaakt.
Leest Immich inmiddels de .json-sidecarbestanden van Google?
Niet rechtstreeks, op het moment van schrijven. Het leest XMP-sidecarbestanden. immich-go leest het formaat van Google en zet het onderweg om. Kijk in de release notes van Immich, want dit verandert.
Verandert het herstellen van de EXIF de kwaliteit van de foto?
Nee. EXIF schrijven past een metadatablok aan. Het gecomprimeerde beeld wordt niet aangeraakt.