ubuntuusers.de

Exiftool - Exif-Informationen völlig neu erstellen

Status: Gelöst | Ubuntu-Version: Ubuntu 10.10 (Maverick Meerkat)
Antworten |

hias2

Avatar von hias2

Anmeldungsdatum:
30. November 2007

Beiträge: 968

Wohnort: Monaco di Baviera

Hallo,

ich lese jetzt schon immer wieder alles Mögliche zu Exiftool durch, aber entweder stelle ich die Frage falsch oder erkenne die Antwort nicht, oder was auch immer...

Ich habe massenweise alte Fotos auf der Festplatte, deren exif-Informationen z.B. so aussehen:

Bildtyp: jpeg (Das JPEG-Bildformat)
Breite: 1446 Pixel
Höhe: 989 Pixel

mehr nicht.

Die Fotos sind teilweise auf einer analogen Kamera entstanden und gescannt worden, teilweise hat gimp beim Entwickeln der Rohdaten meiner Sony Alpha alle exif-Informationen vernichtet. In Programmen wie Shotwell gibt es mit diesen Bildern folgerichtig nichts als Chaos.

Ich möchte in diese Bildern daher nachträglich - sozusagen von Null aus - exif-Informationen schreiben, v.a. das Aufnahmedatum, das ich oft auch noch rekonstruieren kann.

Geht das mit Exiftool und wie ? Vielleicht mit einem Befehl nach diesem Muster ?

exiftool -AllDates='JJJJ:MM:TT HH:MM:SS' DATEINAME.EXT

Für Hinweise wäre ich sehr dankbar.

Gruß Hias

mrkramps Team-Icon

Avatar von mrkramps

Anmeldungsdatum:
10. Oktober 2006

Beiträge: 5523

Wohnort: south central EL

Ok, vorweg ich bin gerade nicht in der Verfassung eine wirklich qualifizierte Antwort zu geben, aber mit diesem Beitragtaucht das hier schonmal in meinen "Eigenen Beträgen" hier im Forum auf und ich kann darauf zurückkommen.

ExifTool kann viele, viele Metadaten in verschiedenste Dateiformate schreiben, worauf der Name tatsächlich nicht unbedingt schließen lässt. Die erste Hürde ist herauszufinden, welches Metadaten-Format man eigentlich einbinden möchen - dicht gefolgt von, welches richtige Feld es sein könnte. In der Dokumentation von ExifTool kann man dazu einen Überblick hier finden. Im Abschnitt EXIF findet man dann zwei Feldnamen, die interessant sein könnten - DateTimeOriginal und CreateDate (musst du aber nochmal selber gegenprüfen, ob das korrekt ist für deinen Anwendungsfall). Was wie wo Shotwell jetzt einlesen kann, kann ich leider nicht sagen.

Dein Befehl ist allerdings schonmal richtig - z.B.:

exiftool -CreateDate="time format" image.jpg

Dabei ist das Zeitformat davon abhängig, was genau Shotwell einliest. Deine Vermutung ist nach gegenprüfen einiger meiner eigenen Bilder offensichtlich korrekt.

So, und jetzt wird es spannend in der Befehlszeile. Ich weiss nicht, wie du die Aufnahmedaten rekonstruieren kannst, aber wenn du das z.B. ausgehend vom TimeStamp der Bilddateien machen kannst, dann wäre es rein theoretisch möglich, dass in der Stapelverarbeitung auszuführen. Ungefähr so würde das dann aussehen:

for i in *.jpg; do exiftool -CreateDate="$(stat -c %y "${i}" | cut -d . -f1 | sed 's/-/:/g')" "${i}"; done

Dabei würden jetzt die TimeStamps von der letzen Modifizierung der Bilddatei im gleichen Format, wie von dir angedacht in das EXIF:Feld "CreateDate" aller JPG-Dateien im Verzeichnis, in dem der Befehl ausgeführt wird, geschrieben werden.

GIMP ist beim Bearbeiten von Bilddateien sicherlich komfortabel, allerdings destruktiv in Bezug auf Metadaten. Insbesondere wenn man eine RAW-Datei nimmt und die dann als JPG speichert. Stattdessen solltest du dich besser mal mit ImageMagick befassen. Das ist genauso befehlszeilenorientiert wie ExifTool, aber die Möglichkeiten der Stapelverarbeitung machen diese Software Suite besonders interessant und dabei werden die Metadaten normalerweise beibehalten - bpsw.:

convert image.jpg -scale 640x640 -quality 100 image_new.jpg

Dabei würde jetzt das Bild so skaliert werden, dass die längste Seite 640px hat und sich die andere Seite proportional anpasst. In den EXIF:Metadaten würden als Bildbreite und -höhe aber weiterhin die Originalmaße angegeben werde.

Also wie oben erwähnt, das Bier... Aber du bekommst das, was du wissen musst. Versprochen.

hias2

(Themenstarter)
Avatar von hias2

Anmeldungsdatum:
30. November 2007

Beiträge: 968

Wohnort: Monaco di Baviera

Hallo dauerflucher,

vielen Dank für Deine ausführliche Antwort.

Zunächst einmal zur Erklärung: Bei den in gimp konvertierten Rohdaten (.ARW-Dateien aus der Sony Alpha 330) habe ich häufig das Bild in Picasa umbenannt und dabei das Datum in den Dateinamen übernehmen lassen. Ob dieses Datum das Aufnahme- oder das Importdatum in Picasa ist, weiß ich nicht, ist mir auch egal. Jedenfalls ergibt sich aus diesen Daten eine brauchbare Sortierung.

Soweit ich die Rohdateien nicht gelöscht habe, ist es ja einfach, da hilft

exiftool -TagsFromFile QUELLDATEI.EXT --Orientation ZIELDATEI.EXT

Aber ich habe oft die Rohdateien gelöscht... 😢

Bei den gescannten Analogfotos ist häufig das Aufnahmedatum hinten auf den Papierfotos drauf und die Uhrzeit würde ich halt so geschätzt eingeben, dass sich eine sinnvolle Reihenfolge ergibt. Das sind alte Urlaubsbilder, da kommt es auf ein paar Stunden hin oder her nicht an. Stapelbearbeitung kann ich damit sicherlich vergessen, aber es muss ja nicht von heute auf morgen gehen 😉 .

Was ich suche, ist der Befehl mit dem ich in eine praktisch exif-datenlose .jpg Datei z.B. das Aufnahmedatum 15.07.2003 15.00 Uhr schreiben kann.

GIMP ist beim Bearbeiten von Bilddateien sicherlich komfortabel, allerdings destruktiv in Bezug auf Metadaten. Insbesondere wenn man eine RAW-Datei nimmt und die dann als JPG speichert.

Das habe ich bemerkt... 👿 Mittlerweile kann ich die in Debian Squeeze und in Maverick in den Quellen vorhandene Alpha-Version von RawTherapee 3.0 verwenden. Die stürzt zwar gelegentlich mal ab, kommt aber anders als die stabilen Versionen von RawTherapee mit den .ARW-Files klar und schont die Exif-Daten. Und die Ergebnisse sehen ganz gut aus. Außerdem habe ich in der VM auch noch die Original-Software von Sony, so dass das Konvertieren der Rohdateien inzwischen gesichert ist.

Aber für die alten Fotos brauche ich exiftool.

Gruß und Danke Hias

mrkramps Team-Icon

Avatar von mrkramps

Anmeldungsdatum:
10. Oktober 2006

Beiträge: 5523

Wohnort: south central EL

Ah, ich glaube, da liegt bei dir möglicherweise ein kleines Verständnisproblem vor, was genau diese EXIF-MetaDaten eigentlich sind. Man muss dazu nicht eine JPG-Datei erst irgendwie konvertieren oder formatieren, sondern man kann diese Daten einfach eintragen. Die werden dann im Header der Datei in einem entsprechenden Format gespeichert, was von entsprechenden Programmen dann ausgelesen werden kann. Stark vereinfacht kann man sich eine Bilddatei eigentlich wie eine HTML-Datei vorstellen. Mal als theoretisches Beispiel:

<html (jpg file)>
<head (jpg header)>
<meta name="author" content="author_name" (EXIF:Artist="author_name")>
</head>
<body (image)>
image file data
</body>
</hml>

Da es sich bei einer Bilddatei aber um ein bestimmtes - sagen wir mal "binäres" - Format handelt, kann man das nicht einfach wie HTML in einem Texteditor öffnen und die MetaDaten in den Abschnitt "header" eintragen, sondern brauch ein entsprechendes Programm um diese Informationen nachträglich einzubetten. Näheres dazu findet man auch in den Manpages von ExifTool - :$ man exiftool. Du kannst dir eine Bilddatei, die bereits mit MetaDaten versehen wurde, ja mal im Terminal ausgeben lassen und wirst dort neben "wirren" Zeichensalat u.a. auch die Metadaten als lesbaren Text wiederfinden:

cat image.jpg | head

Wobei head hier lediglich ein Befehlszeilenwerkzeug, was in diesem Befehl die Ausgabe auf die ersten 10 Zeilen beschränkt - siehe auch :$ man head.

Jedes Feld für die unterschiedlichen MetaDaten-Standards hat einen eigenen Namen. Diese Namen kann man - wie im letzten Beitrag schon verlinkt - hier nachsehen. Der Name muss korrekt sein, damit die Bildverwaltung die MetaDaten auch wie gewünscht interpretiert.

Lange Rede, kurzer Sinn. Unabhängig davon, ob schon EXIF-Metadaten in der Bilddatei vorhanden sind, kann man diese Daten immer im Kopf der Datei einbetten.

exiftool -TAG="tag content" file.ext

Wobei TAG eben für einen der entsprechenden Feldnamen steht - z.B. DateTimeOriginal (date/time when original image was taken). Mehr musst du nicht tun, außer noch auf das Format der Zeitangabe zu achten, damit die Bildverwaltung das versteht - mit JJJJ:MM:TT HH:MM:SS lagst du bereits richtig. Also z.B.:

exiftool -DateTimeOriginal="2010:10:31 21:19:08" image.jpg

Ich hoffe, das hilft dir weiter.

hias2

(Themenstarter)
Avatar von hias2

Anmeldungsdatum:
30. November 2007

Beiträge: 968

Wohnort: Monaco di Baviera

Hallo dauerflucher,

genau das war es. Über -DateTimeOriginal bin ich natürlich schon öfters beim Lesen über exiftool gestolpert, aber ohne Deine Beispielzeile hätte ich es nie praktisch hingekriegt. Aber so geht es und die Bilder werden dann in der richtigen Reihenfolge z.B. in Shotwell angezeigt. Jetzt geht die Arbeit los.

Danke auch für die ausführliche Erklärung, hast mir super geholfen 👍 .

Gruß und Danke Hias

Antworten |