Google Takeout ger bilderna fel datum? Här är orsaken
Varför varje bild från en Google Takeout-export visar dagen du laddade ned den, var de riktiga datumen finns och hur du får tillbaka dem.
Du laddade ned ditt bibliotek från Google Foto, packade upp det och öppnade mappen. Tio år av bilder, och varenda en påstår att den togs i tisdags. Sorterar du efter datum hamnar en stranddag från 2012 bredvid gårdagens skärmbilder.
Inget har gått förlorat. Datumen finns kvar, bara inte där datorn letar efter dem.
Vart tog datumet vägen?
En bild kan ha sitt datum på tre ställen. Kameran skriver ett i själva filen, i EXIF-blocket, som "DateTimeOriginal". Operativsystemet håller två till på utsidan av filen: skapad och ändrad. Finder, Utforskaren och de flesta galleriappar läser EXIF först och faller tillbaka på filens datum när EXIF saknas.
Takeout förstör det här på två sätt. För det första blir filernas datum den tidpunkt då Google byggde zip-filen, eller den tidpunkt då du packade upp den. Det skulle inte spela någon roll om EXIF var intakt.
För det andra saknas EXIF-datumet, eller är fel, för en stor del av bilderna. Skärmbilder har aldrig haft något. WhatsApp och andra chattappar tar bort metadata när de komprimerar. Skanningar har skanningsdatumet, inte dagen då papperskortet togs. Och om du någon gång rättade ett datum i Google Foto sparades rättelsen i Googles databas, inte i filen. Google lägger den korrekta informationen i en separat .json-fil bredvid varje bild i stället för att skriva tillbaka den i bilden.
Datorn struntar helt i de .json-filerna. Så den visar det enda datum den hittar: nedladdningsdatumet.
Kontrollera hur illa det är
Innan du fixar något, ta reda på hur många filer som faktiskt behöver det. Bilder direkt från en mobilkamera har oftast fortfarande ett bra EXIF-datum. Om de flesta av dina har det behöver du kanske bara fixa en del.
Om du har exiftool installerat listar det här kommandot alla filer utan EXIF-datum:
exiftool -r -if 'not $DateTimeOriginal' -filename "Takeout/Google Photos"
I en riktig Takeout-del med 991 bilder som vi mätte var sidecar-filerna den enda källan till ett korrekt datum för ungefär var femte bild. Din blandning blir annorlunda. Bibliotek fulla av skärmbilder, chattbilder och gamla skanningar är mycket mer beroende av sidecar-filerna.
Öppna en sidecar-fil och titta
Varje bild har en partnerfil, till exempel IMG_2034.JPG.supplemental-metadata.json (äldre exporter använder IMG_2034.JPG.json). Öppna den i valfri textredigerare. Delen som spelar roll ser ut så här:
"photoTakenTime": {
"timestamp": "1563102330",
"formatted": "Jul 14, 2019, 11:05:30 AM UTC"
}
Tidsstämpeln är det riktiga datumet, i sekunder sedan 1970, i UTC. Det finns också en creationTime, som är när filen laddades upp till Google. Vill du ha datumet då bilden togs är det photoTakenTime som gäller. Hela filen går vi igenom i vad JSON-filerna i Google Takeout är.
Fixa det för hand
För en handfull bilder kan du sätta datumet manuellt. På en Mac öppnar du bilden i Bilder och justerar datumet. I Windows högerklickar du på filen, väljer Egenskaper och sedan Information, och ändrar fotodatumet. Gör det för femtio bilder och du vill ha ett bättre sätt.
För ett helt bibliotek är exiftool verktyget folk brukar ta till. Ett kommando kopierar tidsstämpeln från varje sidecar-fil till bilden och till filens datum:
exiftool -r -d %s -tagsfromfile "%d/%F.supplemental-metadata.json" \
"-DateTimeOriginal<PhotoTakenTimeTimestamp" \
"-FileCreateDate<PhotoTakenTimeTimestamp" \
"-FileModifyDate<PhotoTakenTimeTimestamp" \
-ext jpg -ext jpeg -overwrite_original "Takeout/Google Photos"
Det fungerar, men med hakar. Google kortar långa sidecar-namn vid 46 tecken, så mönstret ovan missar några. Dubbletter får en (1) på ett annat ställe i sidecar-namnet än i bildnamnet. Videor behöver andra taggar. HEIC och PNG behöver egna körningar. Vi går igenom allt i guiden för exiftool. Det finns också gratisskript från användarna själva, som GooglePhotosTakeoutHelper, som hanterar namnkrånglet åt dig om du är van vid en terminal.
Appen
Om du hellre slipper en kväll på kommandoraden gör Takeout JSON Metadata Fixer det här som en skrivbordsapp på macOS, Windows och Linux.
Du pekar den på Takeout-zipfilerna eller den uppackade mappen. Den matchar varje bild med sin sidecar-fil, inklusive 2024 års supplemental-metadata-namn, de avkortade namnen och dubbletterna med (1). Sedan skriver den photoTakenTime till bildens EXIF och sätter filens skapad- och ändrad-datum så att de stämmer. Bilder utan sidecar-fil behåller sitt EXIF-datum om de har ett, och faller annars tillbaka på filens datum, så ingen bild blir utan datum.
Videor får också sitt datum, inskrivet i MP4- eller MOV-filen där spelarna letar. GPS-koordinaterna skrivs tillbaka i bilden när sidecar-filen har riktiga koordinater. Du kan också låta den byta namn på filerna till det riktiga datumet och sortera dem i mappar per år och månad, men det är valfritt. Vill du bara fixa datumen väljer du att behålla namnen och dina mappar.
Det finns en testkörning som visar vad som skulle ändras utan att skriva något. De första 1000 bilderna är gratis, och ett engångsköp för 19,99 USD tar bort gränsen. Allt körs på din egen dator; dina bilder laddas aldrig upp.
När datumen väl finns inuti filerna förblir de rätt vart bilderna än tar vägen: Bilder på Mac, en NAS, Immich, ett USB-minne eller en ny telefon.
Vanliga frågor
Blir datumen i rätt tidszon?
Sidecar-filen sparar en exakt tidpunkt i UTC. Verktygen räknar om den till datorns lokala tid när de skriver EXIF, som inte har någon tidszon som standard. En bild tagen 11:05 i Paris blir 11:05 om datorn är inställd på Paris-tid, och 05:05 om den är inställd på New York. Ställ in datorn på den zon där de flesta bilderna togs innan du fixar dem, eller acceptera några timmars avvikelse på semesterbilder.
Förlorar jag något när EXIF skrivs?
Att skriva en datumtagg ändrar bara metadatablocket. Bildens pixlar rörs inte. Spara de ursprungliga zip-filerna tills du är nöjd med resultatet, vilket ändå är klokt.
Varför är bara vissa bilder fel?
Därför att bara vissa bilder saknade EXIF-datum från början. Kamerabilder har oftast ett. Skärmbilder, chattbilder, skanningar och allt du har gett nytt datum i Google Foto är beroende av sidecar-filen.
Kan jag radera JSON-filerna när datumen är fixade?
Ja. När datum och GPS är inskrivna i bilderna har sidecar-filerna gjort sitt. Spara dem tills du har kontrollerat några bilder i ditt nya bibliotek, och radera dem sedan.