ubuntuusers.de

HOWTO: Aufnahmedatum/Bild als Erstellungsdatum setzen

Status: Ungelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

Emma2

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 603

Ich habe eine Menge Bilder, die ich von meinem alten Handy auf den PC gerettet habe, auf das neue Handy kopiert. Dort haben sie aber das Kopierdatum als Erstellungsdatum erhalten, und nun ist die Navigation in meinen Fotos nicht mehr sinnvoll möglich. Ich würde nun gern das in der Datei gespeicherte "Aufnahmedatum" als Erstell- oder Geändert-Datum dieser Dateien setzen, gern aus der Shell heraus. Ist das möglich? Wenn ja, wie?

Selbst wenn ich die Werte mtime, atime, ctime und btime auslesen könnte, wäre da ja immer noch nicht der Wert für die Aufnahme des Bildes dabei. Könnte ich alternativ den Dateinamen nutzen, denn der hat bei Fotos immer die Form IMG_yyyymmdd_hhmmss.jpg. Ist das überhaupt von der Shell aus möglich? Oder müsste dafür ein Programm her?

Alternativ: Ich habe noch die Originalkopien, und beim Kopieren auf den PC haben die ihr Datum behalten, das wurde erst beim Kopieren nach Android geändert. Kann ich vom Linux auf das (per USB verbundene) Android-Gerät kopieren, ohne deren Datum zu ändern?

schwarzheit Team-Icon

Supporter
Avatar von schwarzheit

Anmeldungsdatum:
31. Dezember 2007

Beiträge: 3851

Dazu gabs letztens erst n Thread hier im Forum. Ich weiss aber nicht mehr von wem und wo.

gugg mal hier –> https://forum.ubuntuusers.de/topic/datum-aus-exif-an-dateinamen-anhaengen/

micneu

Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 705

Wohnort: Hamburg

Moin, schau dir mal exiftool an. Bin der meinung das du es damit machen kannst

Kreuzschnabel

Anmeldungsdatum:
12. Dezember 2011

Beiträge: 1347

Alternativ ein guter Bilderverarbeiter wie XnView. Der macht solche Umbenennungen in Stapelverarbeitung, auch mit Exif-Daten.

--ks

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 603

Ich danke Euch. XnView werde ich nicht erwerben, weil ich diese Aufgabe hoffentlich nur einmal habe, die Version mit dem Sckript ist meine zweite Option, aber zunächst werde ich es mal mit dem exiftool probieren.

micneu

Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 705

Wohnort: Hamburg

als kleine Hilfe. damit setze ich den Dateinamen meiner Bilder anhand der EXIF Daten

exiftool -v "-FileName<DateTimeOriginal" -d %Y-%m-%d-%H_%%.3nc.%%le *.*

Schmutzfink

Anmeldungsdatum:
29. Juni 2008

Beiträge: 91

XnView werde ich nicht erwerben, weil ...

Hier wird nichts "erworben", sondern nur installiert oder eben nicht. Wir sind hier nicht bei Windows oder Android.

Man kann ein Programm installieren und bei nicht gefallen auch wieder entsorgen.

shiro

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1214

Statt "exiftool" kann man auch "exiv2" mit den Parameter "-t" oder "-T" verwenden. Bei "-t" wird die .jpg Datei umbenannt in das Aufnahmedatum. Die Zeiten werden dabei auch gesetzt. Mit "-T" wird die Datei nicht umbenannt sondern erhält nur die Zeitstempel der Aufnahme. Beispiel:

$ exiv2 x.jpg | grep times
Image timestamp : 2024:08:13 10:57:15
$ ls -og x.jpg
-rwxrwxr-x 1 1856127 Aug 22 22:24 x.jpg
$ 
$ # test-t.jpg wird umbenannt
$ cp -p x.jpg test-t.jpg
$ exiv2 -t test-t.jpg
$ ls -og x.jpg test-t.jpg 2024*.jpg
ls: Zugriff auf 'test-t.jpg' nicht möglich: Datei oder Verzeichnis nicht gefunden
-rwxrwxr-x 1 1856127 Aug 13 10:57 20240813_105715.jpg
-rwxrwxr-x 1 1856127 Aug 22 22:24 x.jpg
$ 
$ # test-T.jpg behält den Namen
$ cp -p x.jpg test-T.jpg
$ exiv2 -T test-T.jpg
$ ls -og x.jpg test-T.jpg 2024*.jpg
-rwxrwxr-x 1 1856127 Aug 13 10:57 20240813_105715.jpg
-rwxrwxr-x 1 1856127 Aug 13 10:57 test-T.jpg
-rwxrwxr-x 1 1856127 Aug 22 22:24 x.jpg
$ 

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 603

Schmutzfink schrieb:

XnView werde ich nicht erwerben, weil ...

Hier wird nichts "erworben", sondern nur installiert oder eben nicht. Wir sind hier nicht bei Windows oder Android.

Auf der Website stehen doch aber Lizenzkosten... ach so, für Privatanwendungen ist es frei, stimmt.

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 603

@micneu & @shiro:

Ich möchte es genau andersherum machen: Der Dateiname enthält Aufnahmedatum und -zeit, aber beim Kopieren sind die enstsprechenden Metadaten für Creation und Change geändert worden. Diese würde ich gern auf den "Wert" aus dem Dateinamen setzen.

Oder ist dazu genau der Parameter -T von exiv2 gut?

shiro

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1214

Ich möchte es genau andersherum machen

Das kann man machen, ist aber keine gute Idee. Der Grund liegt darin, dass beim Quell-Objekt (dem Bild) die Aufnahmeinformationen abgelegt sein sollten (EXIF). Ein Dateisystem kann nicht unbedingt mit Zeitstempeln so umgehen, wie du es gern möchtest und von Linux her kennst (touch).

Als ein Beispiel sei das Dateisystem von Android genannt. Hier kannst du den Zeitstempel einer Datei in der Regel nur ändern, wenn du dies als "root-user" machst. Dateizugriffs-Protokolle (wie MTP bei Android oder GIO bei Linux bzw DavFS) unterstützen nicht unbedingt die Funktion, den Zeitstempel einer Datei zu verändern.

Aus diesem Grund ist es empfehlenswert, den Zeitstempel im EXIF Datenblock eines Bildes abzulegen. Dies kannst du, wie micneu beschrieben hat absolut mit "exiftool" machen. Häufig ist allerdings die Situation, dass man vergessen hat, bei der Kamera das aktuelle Datum (z.B. nach Batteriewechsel) zu setzen. Die Aufnahmen zeigen dann als "Aufnahmedatum" die Zeit nach dem "Werksreset" an. Diese Zeiten lassen sich mit "exiv2" ebenfalls recht leicht automatisch ändern (siehe exiv2 -a, -Y, -O, -D Flags).

Fazit: Setze die korrekte "Aufnahmezeit" im EXIF Block des Bildes und erzeuge dann die Zeitstempel oder den normierten Namen der Bild-Datei.

micneu

Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 705

Wohnort: Hamburg

@Emma2, du musst dich schon mit der Dokumentation der Programme auseinandersetzen, wir können doch nicht alles für dich machen, oder wie siehst du das? Wie man dein Problem mit exiftool löst, keine Ahnung ich habe sowas noch nicht gebraucht, mein Beispiel sollte dir nur helfen wie sowas aussehen könnte, deshalb solltest du dich mit der Dokumentation beschäftigen und googlen ob es schonmal jemand mit exiftool gemacht hat. Gerne kannst du dein Ergebnis hier posten damit andere davon profitieren können

shiro

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1214

Einen "Spezialfall" möchte ich noch erwähnen.

Es kann sein, dass man eine .jpg Datei z.B. durch Konvertierung oder Scannen erzeugt hat. In diesem Fall kann es sein, dass kein EXIF Block existiert und somit kein "Aufnahmedatum" im Bild vorhanden ist. Ich habe daher mittels "touch" die "mtime" der Datei gesetzt und mit "exiv2" das Dateidatum (date -r) als Exif "Aufnahmedatum" gesetzt und dann den Dateinamen des Bildes in genormter Form geschrieben (exiv2 -t).

$ ls --full-time -og
insgesamt 4
-rw-rw-r-- 1 4086 2024-08-23 20:23:12.948883424 +0200 x.jpg
$ touch -d"2004-06-20 12:13:14" x.jpg
$ ls --full-time -og
insgesamt 4
-rw-rw-r-- 1 4086 2004-06-20 12:13:14.000000000 +0200 x.jpg
$ exiv2 x.jpg 
File name       : x.jpg
File size       : 4086 Bytes
MIME type       : image/jpeg
Image size      : 189 x 136
x.jpg: No Exif data found in the file
$ exiv2 -M"set Exif.Photo.DateTimeOriginal $(date -r x.jpg --rfc-3339=ns | sed 's/-/:/g;s/\..*$//')" x.jpg
$ exiv2 x.jpg 
File name       : x.jpg
File size       : 4161 Bytes
MIME type       : image/jpeg
Image size      : 189 x 136
Thumbnail       : None
Camera make     : 
Camera model    : 
Image timestamp : 2004:06:20 12:13:14
File number     : 
Exposure time   : 
Aperture        : 
Exposure bias   : 
Flash           : 
Flash bias      : 
Focal length    : 
Subject distance: 
ISO speed       : 
Exposure mode   : 
Metering mode   : 
Macro mode      : 
Image quality   : 
White balance   : 
Copyright       : 
Exif comment    : 

$ exiv2 -t x.jpg
$ ls --full-time -og
insgesamt 8
-rw-rw-r-- 1 4161 2004-06-20 12:13:14.000000000 +0200 20040620_121314.jpg
$ 

Sollte irgend ein Schritt nicht verstanden sein, dies bitte mitteilen.

Antworten |