Das unglaublich vielseitige und leistungsfähige Exiftool lässt sich dank einer eingängigen Oberfläche auch von weniger versierten Anwendern recht einfach bedienen.
Aktuelle Multimediadateien wie Bilder, Videos oder Musikstücke enthalten oft neben den reinen Daten noch Metadaten. Sie erfassen zusätzliche Informationen, die sich weder im Dateinamen noch in den Attributen des Files finden.
Als wichtigster Standard für diese Metadaten gilt das Exchangeable Image File Format EXIF. Es stammt aus dem Jahr 2010 und kam ursprünglich nur bei Bildern von Digitalkameras zum Einsatz. EXIF unterstützt unter anderem das Erfassen des Aufnahmedatums, der Verschlusszeit und der Blende. Wie bei Standards, die sich am Markt durchgesetzt haben, üblich, ist er weitverbreitet und umfasst heute viel mehr Daten als die ursprünglich vorgesehenen.
Viele Anwendungen, wie etwa Geeqie und Digikam, nutzen die Metadaten in Bildern, um die Reihenfolge beim Anzeigen zu steuern oder eine Suche einzugrenzen. Normalerweise sollten die Metadaten nur einmal gesetzt und dann nicht mehr verändert werden, weil sie eben wichtige Informationen zu den Multimediadaten enthalten.
Allerdings gibt es Ausnahmefälle, in denen der Zugriff auf die Metadaten ebenso sinnvoll wie notwendig ist. So speichern bis heute viele Digitalkameras noch keine Daten zum Standort in den Bildern. Existieren solche aber in Form eines Tracks, den Sie mit einen GPS-Gerät aufgezeichnet haben, drängt es sich förmlich auf, die Position zum Zeitpunkt der Aufnahme als zusätzliches Metadatum in die Datei aufzunehmen.
Für diese und viele weitere Aufgaben entwickelt Phil Harvey seit vielen Jahren das Werkzeug Exiftool [1]. Das als Perl-Library implementierte Programm ist heute die umfassendste freie Software, um Metadaten – neben EXIF auch XMP und IPTC – in Multimediadateien zu lesen, anzupassen oder zu ergänzen. Es kann sogar auf die von den Herstellen der Digitalkameras nicht standardisierten Metadaten zugreifen, die sogenannten Makernotes. Als besonderes Highlight gilt dabei, dass Exiftool in der Lage ist, zuverlässig RAW-Formate zu bearbeiten.
Über die Jahre trugen viele Anwender zur Entwicklung von Exiftool bei. So entwickelte es sich zu einer ausgesprochen umfangreichen, aber auch komplexen Software [2].
Aufrufparameter
Exiftool verfügt über eine Schnittstelle für die Kommandozeile, die Sie mit vielen unterschiedlichen Optionen präzise steuern. Die allgemeinen Optionen beginnen mit einem Minuszeichen, gefolgt von einem oder mehreren Buchstaben. Manchmal folgt noch ein Argument. Die Tabelle “Allgemeine Optionen” fasst die wichtigsten Vertreter zusammen.
|
Option |
Funktion |
|---|---|
|
|
Tag-Duplikate ausgeben (werden normalerweise unterdrückt) |
|
|
Metadaten aus eingebetteten Dateien berücksichtigen |
|
|
Gruppen markieren (Header einfügen) |
|
|
Gruppen markieren (zeilenweise) |
|
|
Makernotes reparieren |
|
|
ignoriert das angegebene Verzeichnis |
|
|
|
|
|
kleinere Fehler oder Warnungen ignorieren |
|
|
Ausgabe in Datei schreiben |
|
|
Dateien überschreiben (voreingestellt: mit Ergänzung |
|
|
Attribute (Dateizeitstempel) erhalten |
|
|
Unterverzeichnisse mit bearbeiten |
|
|
Tag-Namen anstelle von Tag-Beschreibungen zeigen |
|
|
komprimierte Informationen lesen/schreiben |
|
|
setzt den Modus zum Schreiben von Tags |
|
|
mit Fortschrittsanzeige |
Weitere Optionen finden Sie in der Tabelle “Für Spezialfälle”. Kombinierte Optionen, wie -rs anstelle von -r -s verarbeitet Exiftool nicht. Auf manche Optionen folgt ein Metadaten-Schlüsselwort, das sogenannte Tag. Steht vor dem Tag ein Minuszeichen, aktiviert die Software es; bei zweien deaktiviert (ignoriert) sie es. Dem Tag dürfen Zuweisungsoperatoren und Werte folgen.
|
Option |
Funktion |
|---|---|
|
|
Optionen aus Datei lesen |
|
|
Geodaten aus Datei einlesen |
|
|
Zeitkorrektur für Geodaten |
|
|
Originaldateien entfernen |
|
|
Originaldateien wiederherstellen (sofern sie vorab über das Suffix |
|
|
erstellt keine Backup-Datei |
|
|
nachfolgende Argumente auf alle Aktionen anwenden |
|
|
Befehlszeilen gleichzeitig ausführen |
|
|
sortiert die Dateien anhand von Tag |
|
|
wertet |
Geben Sie als letztes Argument in der Befehlszeile ein Verzeichnis an, bearbeitet die Software automatisch alle darin enthaltenen Dateien. Stehen im letzten Argument eine oder mehrere Dateien, bearbeitet Exiftool nur diese.
Die wesentlichen Aktionen des Programms analysieren die EXIF-Tags in den angegebenen Dateien, werten sie aus oder weisen ihnen neue Werte zu. Die (teilweise) normierten EXIF-Tags bestehen aus einem Namen (beziehungsweise einer Tag-Beschreibung) sowie einem oder mehreren Werten. Dabei entsprechen die in der Ausgabe angezeigten Tag-Beschreibungen in vielen Fällen nicht den als Optionen angegebenen Tag-Namen. Nutzen Sie die allgemeine Option -s, um die richtigen Namen zu erfahren. Groß- und Kleinschreibung spielen bei diesen Namen keine Rolle.
Durch die verschiedenen Metadaten-Familien und Tag-Gruppen kommt es vor, dass Tags desselben Namens mehrfach auftreten. Normalerweise zeigt Exiftool nur das erste Auftreten eines Tags an, sofern Sie es nicht durch die Option -a anweisen, alle Vorkommen anzuzeigen.
Ohne weitere Optionen zeigt das Programm, welche EXIF-Tags eine Multimediadatei enthält. Im Beispiel aus Listing 1 ist die Ausgabe ausgesprochen schlank – oft befinden sich wesentlich mehr Metadaten in den Dateien. Das hängt ganz wesentlich von der beim Erstellen oder Bearbeiten verwendeten Software ab.
Listing 1
$ exiftool x.png
File Name : N1-30km.png
Directory : .
File Size : 1038 kB
File Modification Date/Time : 2020:03:11 11:18:42+01:00
File Access Date/Time : 2020:03:11 11:18:42+01:00
File Inode Change Date/Time : 2020:03:13 11:24:57+01:00
File Permissions : rw-r--r--
File Type : PNG
File Type Extension : png
MIME Type : image/png
Image Width : 1920
Image Height : 1080
Bit Depth : 8
Color Type : RGB with Alpha
Compression : Deflate/Inflate
Filter : Adaptive
Interlace : Noninterlaced
Significant Bits : 8 8 8 8
Image Size : 1920x1080
Megapixels : 2.1
Die Namen vieler Tags sind selbsterklärend. Eine Liste der verfügbaren Tags finden Sie in einer speziellen Dokumentation, die Sie unter Image::ExifTool::TagNames nachlesen, das einige Distributionen als spezielle Manpage führen (/usr/share/man/man3/Image::ExifTool::TagNames.3pm.gz). Viele Details dazu finden sich auch auf der Webseite von Exiftool [3].
EXIF-Tags
Die Tags sind in insgesamt sechs Familien organisiert, die aus jeweils mehreren Gruppen bestehen. Für Anwender besonders interessant sind die ersten drei Familien, die anderen dienen sehr speziellen Zwecken.
Die Optionen -g und -G kombinieren Sie optional mit den Nummern der Gruppen, um die Ausgabe der Informationen genauer zu fassen. Ohne diese Angabe fügt -g Zeilen und Zwischentitel der Art ---- File ---- in die Ausgabe ein, -G schreibt am Anfang jeder Zeile eine Gruppenkennung (etwa [EXIF]).
Exiftool gibt normalerweise sehr viele Informationen aus. Um die Ausgabe auf bestimmte Tags zu begrenzen, verwenden Sie die Syntax aus Listing 2. Den Parameter -Tag dürfen Sie beliebig oft angeben. Fehlt ein Tag aus der Befehlszeile in den EXIF-Tags einer Datei, entfällt die Ausgabe der entsprechenden Zeile.
Listing 2
$ exiftool -Tag... Datei|Verzeichnis
Die Tags bestehen aus einem Minuszeichen, gefolgt vom Namen. Letztere sind oft mit den Beschreibungen identisch, wobei Leerzeichen gegebenenfalls entfallen: Focal Length entspricht FocalLength, Circle Of Confusion entspricht CircleOfConfusion. Funktioniert das nicht, wie etwa beim Depth Of Field, dann suchen Sie mit -s nach dem richtigen Namen. Beim Lesen und Schreiben von Metadaten kommt es auf das exakte Einhalten der Syntax an, da kleine Abweichungen oft unerwartete Wirkungen haben.
Es gibt zwei Aufrufvarianten: -Tag berücksichtigt ein Tag, --Tag ignoriert es. So zeigt exiftool -keywords . die Schlagworte aller Dateien im aktuellen Verzeichnis. Dagegen liefert exiftool --keywords . alle Tags mit Ausnahme der Schlagworte aller Dateien im aktuellen Verzeichnis. Die Tabelle “Tag-Modifikationen” zeigt mögliche Varianten.
|
|
Weist dem Tag den angegebenen Wert zu. |
|
|
Ein Leerzeichen als Wert löscht den Inhalt des Tags. |
|
|
Ergänzt den Wert zu Einträgen. |
|
|
Entfernt Wert aus Einträgen. |
|
|
Ergänzt neuen Wert. |
Einige Werte lassen sich nicht überschreiben. So kommentiert Exiftool etwa den Versuch, die Angabe zu Megapixeln zu verändern, mit der Ausgabe Warning: Sorry, Megapixels is not writable.
Praxisbeispiele
Exiftool lernen Sie am besten in der Praxis kennen. Die automatische Backup-Option, die die Originaldateien sichert, verhindert in den meisten Fällen größere Schäden. Dennoch ist es ratsam, zunächst mit Kopien der Originaldateien zu arbeiten.
Mit dem Befehl aus der ersten Zeile von Listing 3 sehen Sie sich die Tags aller Dateien im aktuellen Verzeichnis an. Fällt die Ausgabe zu unübersichtlich aus, nutzen Sie eine Variante dieser Ausgabe für den Webbrowser, die Sie über die Option -htmlDump erzeugen. Leiten Sie deren Ausgabe in eine Datei um, können Sie sich das Resultat anschließend im Browser ansehen.
Listing 3
$ exiftool . $ exiftool -P "-Directory<DateTimeOriginal" -d "%Y/%m/%d" Verzeichnis $ exiftool -P "-FileName<CreateDate" -d "%Y%m%d_%H%M%S-%f.%%e" Verzeichnis
Besonders praktisch ist es, dass das Tool Werte aus Tags als Eingabe für Aktionen akzeptiert. Der Befehl aus der zweiten Zeile von Listing 3 sortiert beispielsweise die Bilder anhand des Zeitpunkts der Aufnahme in Verzeichnisse. Bei dieser Aktion bleiben die Dateinamen unverändert, -P konserviert außerdem die Attribute der Dateien.
Möchten Sie dagegen die Dateien entsprechend dem Aufnahmezeitpunkt umbenennen, dann gelingt das mit dem Kommando aus der dritten Zeile von Listing 3. Im Argument zu -d repräsentieren %Y%m%d und %H%M%S dieselben Werte wie beim Date-Kommando in der Shell. Das %%e steht für das Suffix, %f für den bisherigen Dateinamen. Auf diese Weise setzen Sie die Dateinamen maßgeschneidert zusammen.
Für beide Varianten wertet Exiftool die in den Dateien enthaltenen EXIF-Tags aus. Im ersten Fall erzeugt -Directory basierend auf dem Wert von DateTimeOriginal neue Verzeichnisse, im zweiten Fall baut es aus dem Tag CreateDate den Dateinamen. Da das Umleitungszeichen (“<“) Teil der Syntax von Exiftool ist, setzen Sie den gesamten Ausdruck in Hochkommas – anderenfalls würde die Shell den Operator interpretieren.
Manche Situationen erfordern Änderungen an den EXIF-Tags. War beispielsweise die Uhr der Kamera falsch gestellt, ist es oft sinnvoll, die Aufnahmezeitpunkte nachträglich zu korrigieren. Eigentlich müsste es ausreichen, dazu das Tag DateTimeOriginal zu verändern (Listing 4, Zeile 1).
Listing 4
$ exiftool "-DateTimeOriginalOperator=YY:MM:DD d:m:s" . $ exiftool "-AllDatesOperator=YY:MM:DD d:m:s" .
Allerdings gibt es mehrere EXIF-Tags, die den Zeitpunkt der Aufnahme enthalten. Nicht jede Software zum Anzeigen der Bilder funktioniert mit einer bestimmten Angabe korrekt. Es ist daher oft besser, das Pseudo-Tag namens AllDates zu verwenden (Listing 4, Zeile 2)
Besonders nützlich macht sich Exiftool beim Ergänzen von Geodaten aus externen Tracks für Aufnahmen, die noch keine Positionsdaten enthalten. Zwei Optionen sind dabei wichtig: -geotrack=Track-Datei und -geosync=min:sec. Exiftool vermag die meisten gebräuchlichen Formate für Geodaten zu interpretieren, insbesondere GPX.
Da die Uhren von Tracker und Kamera oft nicht synchron laufen und die Uhrzeit als Referenz für die Position dient, erlaubt -geosync= eine Korrektur der Zeiten beim Zuordnen der Positionen, ohne dabei die Zeitstempel in den Bildern zu verändern.
TIPP
Es ist sinnvoll, am Beginn einer Tour einmal das Navi mit Uhrzeitanzeige zu fotografieren, um die Differenz zwischen Kamera und Navi zu dokumentieren.
Positive Vorlaufzeiten der Kamera korrigieren Sie mit negativen Werten für die Option. Oft ist es aber besser, die falsche Zeit in den Bildern direkt in den Bildern mittels -AllDates zu ändern.
Es gibt sechs Standardgeotags, zu denen manchmal noch um drei weitere hinzukommen (siehe Tabelle “Geotags”). Diese Werte – meist nur die ersten sechs – extrahiert das Exiftool aus den Geotracks, wobei es die Position anhand der Uhrzeit interpoliert.
|
Tag |
Bedeutung |
|---|---|
|
|
Datum und Uhrzeit |
|
|
Datum |
|
|
Uhrzeit |
|
|
Breitengrad |
|
|
Längengrad |
|
|
Höhe über NN |
|
Zusätzliche Geotags |
|
|
|
Richtung |
|
|
Neigung |
|
|
Verdrehwinkel |
Der Aufruf um Geodaten sieht in einer einfachen Form so aus wie in der ersten Zeile von Listing 5. In diesem Fall würde die Uhr der Kamera 12 Minuten und 34 Sekunden hinter dem GPS-Gerät zurückhängen. Wollen Sie mehrere Track-Dateien verwendet, geben Sie diese einzeln als Argumente an (Listing 5, Zeile 2). Eine Konstruktion wie -geotag=*gpx verursacht in der Regel viele Fehlermeldungen. Mit dem Befehl aus Listing 5, Zeile 3 löschen Sie Geodaten aus den Dateien.
Listing 5
$ exiftool -geotag=mytrack.gpx -geosync=+12:34 . $ exiftool -geotag=1.gpx -geotag=2.gpx . $ exiftool -geotag= .
Eine Meldung wie Warning: Time is too far before track in File:Geotime (ValueConvInv) weist auf ein Problem mit der Zeitzone hin. GPS-Zeiten sind immer als UTC (Coordinated Universal Time) angegeben, die Uhren in Kameras liefern dagegen meist die lokale Zeit. Das müssen Sie unter Umständen bei der Angabe der Korrektur berücksichtigen [4].
Grafische Oberflächen
Mehrere Projekte haben bereits versucht, das komplexe System der EXIF-Tags mit einer grafischen Oberfläche leichter zugänglich zu machen. Mindesten drei dieser Projekte finden sich in den Repositories von Arch Linux:
- Digikam ist aktuell und funktioniert recht gut, verwendet allerdings manchmal spezielle Tags, die nicht vollständig kompatibel mit denen von Exiftool sind.
- Bei pyExiftoolGUI handelt es sich um eine auf Python 2 basierende – also inzwischen veraltete – Anwendung, die Probleme beim Installieren verursacht.
- jExiftoolGUI [5] stellt den Versuch dar, pyExiftoolGUI nach Java zu portieren. Momentan gibt es dabei Probleme bei der Installation, zumindest unter Arch Linux. Der Entwickler stellt aber ein Debian-Paket, ein AppImage sowie ein JAR-Archiv mit der aktuellen Version bereit [6].
Gerade bei jExiftoolGUI geht es momentan in großen Schritten voran. Der Entwickler Harry van der Wolf implementierte in den letzten Versionen 1.0 bis 1.4 innerhalb weniger Tage viele neue Features. Das universelle JAR sollte auf allen Plattformen starten.
Die Oberfläche (Abbildung 1) bereitet wenig Schwierigkeiten: Über die Schaltflächen Load Directory und Load Image öffnen Sie Bilder. Um die eingebettete Vorschau in RAW-Dateien anzuschauen, benötigt jExiftoolGUI das Befehlszeilenprogramm Dcraw. Ein Doppelklick auf einen Dateinamen oder ein Thumbnail öffnet das Bild in einem Anzeigeprogramm, das Sie einstellen dürfen.
Derzeit strukturieren fünf Reiter im rechten Teil des Programmfensters die Aktionen des Programms. View Data zeigt in den Bildern enthaltene Daten nur an, Edit Data erlaubt das Bearbeiten einiger der Daten, und Copy Data ermöglicht das Übertragen von Daten zwischen den Bildern. Unter Your Commands dürfen Sie eigene Exiftool-Befehlszeilen definieren und ausführen. Der Reiter Exiftool Database hilft bei der Suche nach Tags.
Zunächst ist der Reiter View Data aktiv: Im rechten Fenster zeigt jExiftoolGUI dabei voreingestellt (Schaltfläche: All) sämtliche von Exiftool generierte Ausgaben, wenn Sie es mit einem Dateinamen und ohne Optionen aufrufen. Normalerweise sind das zu viele Informationen, sodass es hier oft sinnvoller ist, die Ausgabe auf bestimmte Gruppen zu begrenzen.
Das ermöglicht der Button Common Tags. Im Feld rechts daneben schränken Sie die Informationen entsprechend ein. Viele Bilder enthalten nicht in allen Gruppen tatsächlich Informationen, die Ausgabe bleibt dann entsprechend leer. Analog wirken die Schalter By Group und By Camera, mit denen Sie etwa gezielt die Makernotes der Bilder auswählen.
Das Editieren der EXIF-Tags ist eines der Hauptanliegen von jExiftoolGUI. In den sieben Kategorien des Reiters Edit Data haben Sie direkten Zugriff auf die Daten. Über den ersten Reiter Exif laden Sie die Standard-EXIF-Tags von einem Bild in den Zwischenspeicher und übertragen sie anschließend auf alle ausgewählten Bilder.
Speziell zum Bearbeiten von XMP-Tags dient der gleichnamige Reiter. Mit den hier zusammengefassten Tags beschreiben Sie das Motiv, nicht die technischen Eigenschaften des Bilds. Insbesondere steht hier das Tag Keywords bereit, in dem Sie mehrere durch Kommas getrennte Stichworte eingeben dürfen.
Der Reiter gps ist vorgesehen, um die Positionsdaten eines Bilds manuell auf mehrere andere zu übertragen. Dazu wählen Sie zunächst das Quellbild aus und kopieren die Daten mit Copy from selected image in den Zwischenspeicher. Dann wählen Sie die Zielbilder aus und übertragen mit Save to selected image(s) den Inhalt des Zwischenspeichers. Mit Open Map Coordinates.net erhalten Sie über den Webbrowser eine zusätzliche Möglichkeit, die Koordinaten eines Bilds festzulegen.
Geodaten aus externen Tracks fügen Sie den Bildern über den Reiter Geotagging hinzu. Dazu laden Sie entweder vorab einen Ordner mit Bildern oder verwenden die aktuell geladenen Bilder. Anschließend laden Sie im Reiter unter GPS log file eine Datei mit den Track-Daten in einem vom Exiftool interpretierbaren Format.
Unter Geosync time können Sie wie oben beschrieben den Zeitversatz zwischen Kamera und Navi kompensieren. Write geotag information to image(s) schreibt dann die Positionsdaten in die Bilddateien (Abbildung 2).
Die weiteren Reiter Gpano, Lens und XMP_IPTC_String+ dienen sehr speziellen Zwecken. Im Reiter Your Commands gibt es die Möglichkeit, beliebige Befehlszeilen auszuführen. Für diesen Dialog plant der Entwickler in der nächsten Version noch erhebliche Änderungen, unter anderem eine zusätzliche History.
Sehr besonders – und eher für fortgeschrittene Anwender gedacht – ist der letzte Reiter Exiftool Database (Abbildung 3). Er gewährt Zugang zur internen Exiftool-Tag-Datenbank, mit allen aktuell bekannten Tags aller Familien und Gruppen.
Besonders einfach gelingt das über das Eingabefeld Search like, das eine Volltextsuche vornimmt. Die Schaltflächen By Group und Camera make erlauben, die Ergebnisse einzuschränken. Die interne Datenbank bildet jExiftoolGUI in Form einer SQLite-Datenbank nach. Das ermöglicht strukturierte Anfragen.
Fazit
Phil Harvey entwickelt Exiftool kontinuierlich weiter. Auf diese Weise bleibt die Kompatibilität mit Neuerungen in den Standards und bei den Bildformaten gewahrt. Allerdings steigt damit unvermeidlich die Komplexität, was das Einarbeiten in das Programm erschwert. Bisher ist es Harvey allerdings erfreulicherweise gelungen, die Abwärtskompatibilität zu gewährleisten. Früher erfolgreich angewendete Befehlszeilen funktionieren daher heute in der Regel immer noch.
Die Entwicklung der Bedienoberfläche jExiftoolGUI geht ebenfalls in großen Schritten voran. Im Sommer 2020 erschienen in kurzer Folge die Versionen 1.0 bis 1.4. Dieses Programm erleichtert gerade weniger versierten Anwendern den Umgang mit Exiftool, da es die Informationen gut strukturiert. (agr/jlu)
Glossar
-
XMP
-
Extensible Metadata Platform (ISO 16684-1). Ursprünglich von Adobe entwickelter Standard, um Metadaten in digitale Medien einzubetten oder als Filialdatei zu speichern.
-
IPTC
-
Eigentlich IPTC-IIM, International Press Telecommunications Council – Information Interchange Model. Standardisiertes Datenformat zum Speichern von Metadaten in Bilddateien.
Infos
-
Exiftool: https://exiftool.org
-
Weiterführende Informationen: https://exiftool.org/#links
-
Tag-Namen: https://exiftool.org/TagNames/
-
Beispiele: https://exiftool.org/geotag.html#Examples
-
jExiftoolGUI: https://github.com/hvdwolf/jExifToolGUI/








