Du hast Verzeichnisse voller Bilder mit XMP- und/oder IPCT-Tags – und jetzt? Falls du noch keine eigenen Informationen in Bildern gespeichert hast wie in den vorherigen zwei Artikeln beschrieben (Teil 1, Teil 2), kannst du trotzdem weiterlesen und von den beschriebenen Anweisungen profitieren, denn alle Digitalkameras speichern sowieso alle Aufnahmewerte (wie Blende, Belichtungszeit, ISO-Wert und vieles mehr) in den Bildern ab. Aber natürlich wirst du keine Informationen in den Bildern finden, die du vorher nicht ins Bild gespeichert hast: Autor, Copyright, Bildbeschreibung etc.
Die einfachsten Art, exiftool anzuwenden, ist, Listen von Bildeigenschaften zu erstellen.
Inhalt
- Listen von Bildeigenschaften (inkl. Listenformatierung)
- Noch ein paar Bemerkungen zu Beginn
- Bildeigenschaften auflisten
- Tags, die ich oft brauche
Listen von Bildeigenschaften
Zum Starten gleich mal ein Beispiel:
exiftool -common DSCN0705.JPG
gibt
File Name : DSCN0705.JPG File Size : 4.0 MB Camera Model : COOLPIX P7800 Date/Time Original : 2017:02:10 14:47:31 Image Size : 4000x3000 Quality : Fine Focal Length : 6.0 mm Shutter Speed : 1/30 Aperture : 8.0 ISO : 125 White Balance : Auto1 Flash : Off, Did not fire
Wenn du es lieber in Deutsch hättest, füge «-lang de
» in die Kommandos ein:
exiftool -lang de -common DSCN0705.JPG
gibt
Dateiname : DSCN0705.JPG Dateigröße : 4.0 MB Kameramodell : COOLPIX P7800 Erstellungsdatum/-uhrzeit : 2017:02:10 14:47:31 Bildgröße : 4000x3000 Bildqualität : Fine Brennweite : 6.0 mm Belichtungsdauer : 1/30 Blende : 8.0 ISO-Empfindlichkeit : 125 Weißabgleich : Auto1 Blitz : Blitz wurde nicht ausgelöst, Blitz unterdrücken-Modus
So eine Liste ist zwar ok für ein einzelnes Bild, aber wenn du das Kommando auf ein ganzes Verzeichnis anwendest (exiftool -lang de -common .
), ist die Ausgabe eher lang und unübersichtlich. Du kannst nur einzelne Tags angeben, aber dafür musst du die intern verwendeten Tagnamen wissen (nicht den in der Liste angezeigten Text). Der Parameter -s
hilft dabei:
-s
zeigt die internen Tagnamen statt der englischen oder deutschen Tag-Beschreibung in der Ausgabe.
exiftool -s -common DSCN0705.JPG
gibt
FileName : DSCN0705.JPG FileSize : 4.0 MB Model : COOLPIX P7800 DateTimeOriginal : 2017:02:10 14:47:31 ImageSize : 4000x3000 Quality : Fine FocalLength : 6.0 mm ShutterSpeed : 1/30 Aperture : 8.0 ISO : 125 WhiteBalance : Auto1 Flash : Blitz wurde nicht ausgelöst, Blitz unterdrücken-Modus
Nun kannst du nur einzelne Tags ausgeben, indem du sie einfach alle auf der Kommandozeile angibst, jeweils mit einem Minus davor (Gross-/Kleinschreibung egal):
exiftool -lang de -FocalLength -shutterspeed -aperture -ISO DSCN0705.JPG
gibt
FocalLength : 6.0 mm ShutterSpeed : 1/30 Aperture : 8.0 ISO : 125
Für viele Bilder wird das allerdings immer noch unübersichtlich. Aber es gibt mehrere Arten, die Listen der Ausgabe zu formatieren:
- -t oder -tab gibt eine ähnliche Ausgabe wie oben, aber hinter jedem Tag-Namen folgt ein Tabulator-Zeichen und dann der Wert, statt der Leerzeichen und Doppelpunkte. Das ist besser, wenn man die Daten weiterverarbeiten will, aber immer noch nicht übersichtlich. Mit den Zusatz-Parametern -S oder -s1, -s2, -s3 kann man die Ausgabe verkürzen (s3 lässt z.B. die Tagnamen weg).
- -T oder -table gibt die Daten mit Tabulatoren dazwischen aus, nur eine Zeile pro Bild. Dabei ist es nützlich, den Dateinamen auch auszugeben (-filename), weil es keine «Titelzeile» pro Bild gibt wie beim obigen Format.
- -csv formatiert die Daten im CSV-Format (comma-separated value, kann in eine Tabellenkalkulation importiert werden). Gib die Liste auf die Konsole aus, bis sie deinen Erwartungen entspricht, dann füge am Ende der Kommandozeile «>» und den zu schreibenden Dateinamen an, um die Daten tatsächlich in die Datei zu speichern.
Beispiele:
Die gleichen Tags wie oben, aber for alle Bilder im aktuellen Verzeichnis (.
), in Tabulator-getrennter Form (-T
):
exiftool -T -fileName -FocalLength -shutterspeed -aperture -ISO .
gibt
DSCN7563.JPG 8.2 mm 1/640 8.0 80 DSCN7565.JPG 12.5 mm 1/400 8.0 80 DSCN7587.JPG 4.2 mm 1/33 2.2 40
Mit -r
(oder -recurse
) werden auch die Bilder in den Unterverzeichnissen aufgelistet. Dann ist es empfehlenswert, auch den Verzeichnisnamen aufzulisten mit -directory
:
exiftool -t -r -directory -fileName -FocalLength -shutterspeed -aperture -ISO .
gibt
. DSCN7563.JPG 8.2 mm 1/640 8.0 80 . DSCN7565.JPG 12.5 mm 1/400 8.0 80 . DSCN7587.JPG 4.2 mm 1/33 2.2 40 ./todo DSCN7575.JPG 12.5 mm 1/20 2.2 320 ./todo DSCN7579.JPG 6.0 mm 1/17 2.2 400
Noch ein paar Bemerkungen zu Beginn
Damit du die folgenden Bespiele besser verstehst und einfacher für deine Zwecke abändern kannst, lohnen sich ein paar allgemeine Bemerkungen.
- Kommandos kopieren und ändern
Ein paar Kommandos, die ich weiter unten vorstelle, sind etwas komplizierter. Ich empfehle dir, sie nicht abzutippen. Am besten kopierst du das Kommando von hier in einen Texteditor, änderst es für deine Bedürfnisse ab und kopierst es dann vom Texteditor auf die Kommandozeile. Als Texteditor nimm so etwas wie Notepad (auf Windows) oder gedit (auf Linux), nimm auf keinen Fall MS Word oder ein ähnliches Textverarbeitungsprogramm! Word & Co. verändern nämlich je nach Einstellung die Anführungszeichen in «typografische» Anführungszeichen, welche zwar im Text schöner aussehen, aber auf der Kommandozeile nicht funktionieren. - Bildauswahl
Wie beim Schreiben der Tags (beschrieben im letzten Teil) kannst du auch beim Lesen die Kommandos auf ein einzelnes Bild anwenden oder auf mehrere, indem du den (oder die) letzten Parameter entsprechend angibst:- genauer Dateiname: nur das angegebene Bild wird behandelt (du kannst auch mehrere angeben, mit Zwischenraum getrennt)
- Dateiname mit
*
: alle passenden Bilder werden behandelt (DSCN07*.JPG
für alle Bilder deren Namen mit «DSCN07
» beginnt) - Verzeichnisname: alle Bilder im Verzeichnis werden behandelt. Ein Punkt steht dabei für das aktuelle Verzeichnis. Mit dem Parameter «
-r
» (recursive) werden die Unterverzeichnisse auch behandelt.
Als Beispiele kannst du die Kommandos beim Listenformat ansehen, dort werden Infos für einzelne Bilder oder Verzeichnisse ausgegeben.
- Ausgabe-Ziel
Standardmässig gibt exiftool die Resultate auf die Konsole aus. Um sie stattdessen in eine Datei zu schreiben, kannst du jeweils hinter dem Kommando ein Grösser-Zeichen und den Dateinamen angeben:exiftool -T -r -filename -exposuremode -ISO . > out.txt
Gibt eine Liste aus mit Datename, Belichtungsmodus und ISO-Wert für die Bilder im aktuellen Verzeichnis (
.
), pro Bild eine Zeile mit Tabulatoren zwischen den Werten (-T
), und die Angaben werden nicht auf die Konsole ausgegeben, sondern in die Dateiout.txt
.
Bildeigenschaften auflisten
Schnell eine Übersicht über Bildeigenschaften von vielen Bildern zu haben, kann bei vielen Arbeiten mit Fotos helfen. Ein paar Kommandos, die ich häufig brauche:
Schnell kontrollieren, ob alle Bilder einen Aufnahmeort haben (und wenn nicht, sehe ich dank dem -filename
schnell, wo ich noch ändern muss):
exiftool -T -Country -State -City -Location -filename .
Auf die gleiche Art: schnell kontrollieren, ob alle Bilder Autor und Copyright haben, oder alle Autoren-Angaben:
exiftool -T -Creator -Copyright -filename .
exiftool -T -xmp:author:all -filename .
Oder für Rating und Bildbeschreibung, hier wird die Liste übersichtlicher, wenn der Filename am Anfang der Liste steht:
exiftool -T -filename -Rating -Description .
Alle diese Kommandos lesen nur Daten. Geschreiben wird nur, wenn ein Tagname von einem «=
» gefolgt ist. Solange du nirgends Gleichheitszeichen in deinen Kommandos hast, kannst du also frischfröhlich experimentieren! Im «schlimmsten» Fall wird nichts ausgegeben, oder nicht, was du wolltest, aber du kannst nichts kaputtmachen.
Tag-Namen finden, Tag-Gruppen
Für die Ausgabe kannst du die Namen aller Tags verwenden, die es gibt (und das sind sehr viele!). Praktisch sind darum auch Tag-Gruppen (wie etwa in den obigen Beispielen -common
oder -xmp:author
). Die Beispiele unten enthalten die Namen einiger Tags und Gruppen, die ich verwende. Eine Tabelle meiner meistbenutzen Eigenschaften findest du am Schluss.
Wenn du weitere Tags suchst, konsultiere die Tag-Liste von Phil Harvey, da sind ausser den ersten paar Gruppen vor allem die vier Gruppen am Schluss der Liste interessant (Extra, Composite, Shortcuts, MWG
). Composite-Tags etwa sind Werte, welche aus mehreren anderen zusammengefasst oder berechnet werden und darum einerseits praktischer sind zum Lesen von Informationen, aber andererseits nicht geschrieben werden können. Zum Beispiel kommt Aperture
aus FNumber
und ApertureValue
, oder ShutterSpeed
aus ExposureTime
, ShutterSpeedValue
und BulbDuration
. In vielen Fällen sind die Werte gleich (z.B habe ich bisher nur fnumber
gefunden, die den gleichen Wert enthalten wie aperture
). Genaueres siehe exif-Doku über composite tags.
exiftool -t -r -directory -fileName -ExposureTime -FNumber .
gibt also (meistens?) dasselbe wie
exiftool -t -r -directory -fileName -shutterspeed -aperture .
Wenn du Tags suchst, aber nicht weisst, wie sie heissen, oder wenn du die volle Pracht von allen Tags einer Datei möchtest, hilft das folgende Kommando:
exiftool -a -u -g1 bildname.jpg
oder
exiftool -a -u -g1 -lang de bildname.jpg
Alle Tags zu einem Bild ausgeben, auch Duplikate (-a
) und unbekannte Tags (-u
), geordnet nach Gruppe (für Tag-Familie 1, -g1
).
Wenn du noch -s
einfügst (und -lang de
weglässt), bekommst du wieder die internen Tagnamen statt der englischen oder deutschen Beschreibungen. Damit kannst du dann wieder Tags herauspicken für Liste über mehrere/viele Bilder.
Du kannst auch Sterne für die Tag-Namen verwenden, allerdings musst du den Parameter dann in einfache Anführungszeichen einschliessen:
exiftool "-*flash*" image.jpg
Listet alls Tags, die etwas mit dem Blitz zu tun haben.
Für Tag-Gruppen gibt es auch das Wort :all
, sinnvollerweise mit -a
kombiniert (listet auch Duplikate):
exiftool -xmp:author:all -a image.jpg
Listet alle Tags der Gruppe xmp:author
.
Exportieren in Spreadsheets
Zum Sortieren und Weiterverarbeiten der Tags ist es gut, die Angaben in ein Spreadsheet importieren zu können (LibreOffice Calc, Excel o.ä.). Das geht über eine CSV-Datei:
exiftool -r -csv -f -q -n -fileName -GPSPosition -CreateDate -ModifyDate -FocalLength -ExposureTime -FNumber -ISO -BrightnessValue . > DATEINAME.csv
Extrahiert bestimmte Metadaten aller Bilder im aktuellen Verzeichnis und in Unterverzeichnissen) in eine CSV-Datei:
-r
(rekursiv): Bilder aus Unterverzeichnissen auch auflisten-csv
Werte im Format für csv-Files ausgeben (comma separated values). Diese Option stellt auch sicher, dass Werte in die korrekten Spalten einsortiert werden, es braucht also kein-f
(siehe dort).-f
(force) druckt alle Tags, auch solche, für die es keinen Wert gibt (da wird «-
» ausgegeben).
In Verbindung mit-csv
kannst du-f
weglassen, dann bleiben Felder ohne Werte einfach leer. Wenn du hingegen tabellarische Übersichten mit-T
erstellst, braucht es-f
, damit die Werte in den korrekten Spalten landen.-q
(quiet) gibt keine Status-Meldungen aus, also z.B. am Ende kein «128 image files read». Das ist für .csv-Files empfehlenswert, denn diese Zeile möchtest du nicht im Datenfile.-n
schreibt numerische Werte als Zahlen. Z.B. wird die Belichtungszeit nicht «1/20
«, sondern «0.05
» geschrieben und GPS-Angaben als Gradzahlen mit Kommastellen:
mit-n
:DSC0058.JPG,DSC0058.JPG,47.0146861111111 8.30545555555556,4.15,0.02,2.2,32,9.901033973
ohne-n
:DSC0058.JPG,DSC0058.JPG,"47 deg 0' 52.87"" N, 8 deg 18' 19.64"" E",4.2 mm,1/50,2.2,32,9.901033973
> Dateiname.csv
: In diese Datei wird die Ausgabe geschrieben. Lass die Angabe beim Testen deines Kommandos weg und schau dir die Ausgabe auf der Konsole an. Sobald sie dir gefällt, kannst du «>
» und den Dateinamen am Ende der Kommandozeile angeben, um die Daten tatsächlich in die Datei zu speichern.
Du magst dich fragen, ob solche Listen die Arbeit wirklich erleichtern. Ich meine: definitiv! Wie oft habe ich schon Bildeigenschaften von mehreren Bildern hintereinander angeschaut, oder die Ansicht im File-Explorer, XnView oder einem anderen Tool zurechtgebastelt, um die gewünschten Eigenschaften von mehreren Bildern vergleichen zu können. Mit exiftool bin ich viel schneller und kann die extrahierten Listen erst noch weiterverarbeiten, falls nötig.
exiftool ist aber noch viel mächtiger. Im nächsten Teil zeige ich, wie man mit exiftool die gespeicherten Binärinformationen extrahiert (manche Bilder enthalten nämlich noch ein paar kleinere Versionen des Inhalts) und vor allem, was man mit Bedingungen anstellen kann. Dann wird es nämlich richtig spannend: wenn man einen Befehl nur auf ein paar Bilder in der Liste anwenden kann, ohne vorher die Bilder mühsam von Hand auszuwählen!
Zum Schluss wie versprochen noch meine Tag-Hitliste:
Tags, die ich oft brauche
(Die Namen sind unabhängig von Gross-/Kleinschreibung.)
Name | Beschreibung | |
---|---|---|
allDates | Tag-Gruppe: DateTimeOriginal, CreateDate, ModifyDate (nur lesen) |
|
City | Stadt des Aufnahmeortes | |
Common | Tag-Gruppe: die wichtigsten Kameraeinstellungen zum Bild (Blende, Belichtungszeit etc.) | |
Copyright | Copyright-Vermerk | |
Country | Land des Aufnahmeortes | |
CreateDate | Datum/Zeit, wann das Bild aufgenommen wurde. («creation date of the digital representation» – siehe auch DateTimeOriginal) |
|
Creator | Ersteller | |
DateTimeOriginal | Datum/Zeit, wann das abgebildete Werk geschaffen wurde. Wird von den Kameras gleich gesetzt wie CreateDate, aber eigentlich ist es das Datum, wann der Inhalt geschaffen wurde (Bsp: wenn ich eine Statue fotografiere, müsste DateTimeOriginal das Datum sein, wann die Statue geschaffen wurde. – «creation date of the intellectual content being shown») |
|
Description | kurze Bildbeschreibung | |
Directory | Pfad der Datei (relativ zum Verzeichnis, aus dem das Kommando ausgeführt wurde) | |
ExposureTime | Belichtungszeit | |
FileName | Dateiname | |
FileModifyDate | Wert kommt nicht aus den Tags, sondern aus den Dateieigenschaften: letzte Änderung der Datei | |
FocalLength | Brennweite | |
FNumber | Blendenzahl | |
GPSPosition | GPS-Position: geografische Länge & Breite (Gruppe, nur lesen; zum Schreiben GPSLatitude und GPSLongitude) |
|
ImageSize | Bild-Abmessungen in Pixeln (Breite x Länge) (Gruppe, nur lesen; zusammengesetzt aus ImageWidth und ImageHeight) |
|
ImageWidth | Bildbreite in Pixeln | |
ImageHeight | Bildhöhe in Pixeln | |
ISO | ISO-Wert | |
Keywords | Stichworte; Tag kann mehrfach vorkommen (zum Schreiben «+=» und «-=» benutzen, um einen Wert hinzuzufügen oder wegzunehmen, ohne andere Werte zu löschen) |
|
Location | Aufnahmeort | |
Make | Kamerahersteller | |
Model | Kameramodell | |
ModifyDate | Datum/Zeit der letzten Änderung von Tags (siehe auch FileModifyDate) | |
Orientation | Bildausrichtung:
|
|
Rating | Bewertung (5 ist höchster Wert, 1 niedrigster) | |
Shutterspeed | Verschlusszeit Composite-Tag: nur lesen (zum Schreiben exposureTime u.a.) |
|
State | Staat (Bundesstaat) des Aufnahmeortes | |
ThumbnailImage | kleines Vorschaubild (Binärdaten: zum Auslesen «-b» benutzen und Ausgabe mit «>» in eine Datei schreiben) |
|
-MWG:all | alle MWG-Tags (wie xmp:author:all, dazu Beschreibung, Keywords, Ausrichtung etc.) (Gruppe, nur lesen) |
|
xmp:author:all | alle Tags zum Autor (Name, Adresse, Copyright) (Gruppe, nur lesen) |
Geändert: Beschreibung von -f präzisiert, v.a. in Verbindung mit -csv.