Vor einigen Wochen hat mir der Hobbyfotograf Malte Flender eine Email geschickt mit dem Hinweis auf ein von ihm geschriebenes kleines Skript für Linux, welches die Verschlagwortung von Bildern vereinfachen soll.
Er erklärt es so:
„Als Informatik-Student möchte ich gerne die Bilderverwaltung mit Linux-Bordmitteln erledigen. Aus diesem Grund habe ich mir ein kleines Shellscript geschrieben, um die Metadaten der Bilder zu bearbeiten.
Ich weiß, dass kaum jemand Linux zur Bildverarbeitung benutzen wird, aber weil es ja trotz der kleinen Nutzergemeinde jemandem helfen könnte, würde ich das Script auch gerne anderen zukommen lassen.
Deswegen finden sie das Script unter dieser URL:
https://bitbucket.org/snippets/mflender/KBrre
Die Idee von dem Skript ist es, die Verschlagwortung der Bilder unter Linux auf der Kommandozeile zu vereinfachen:
Dazu ruft man es mittels ./meta <Dateiname> auf.
Weil sich der „Copyright Owner“ in der Regel nicht ändert wird er in Zeile 18 fix eingesetzt (muss für den jeweiligen Anwender geändert werden).
Als erstes wird der Dateiname ausgegeben, damit man weiß, welche Datei man gerade bearbeitet.
Nun wird man gefragt, wie denn der Titel des Bildes lauten soll, z.B. „Rote Rose auf grünem Feld“.
Als nächstes fragt das Skript nach den Keywords, z.B. „Rot, Rose, Idylle, Feld, Sommer, u.s.w.“
Zum Schluss werden alle Metadaten des Bildes ausgegeben, so das man sie kontrollieren kann.
Soviel zur Benutzung, technisch passiert dabei Folgendes:
Zeile 23 bis 35 sind nur dazu da, die Eingaben zu prüfen und im Fehlerfalle abzubrechen.
Zeile 38 gibt den Dateinahmen aus.
Zeile 41 und 42 fragen den Benutzer nach Title und Keywords und speichern diese in den Variablen IPTC_Caption und IPTC_Keywords ab.
Danach wird exiftool (geniales Tool von Phil Harvey) aufgerufen, um zunächst alle Metadaten bis auf das ICC-Farbprofil zu löschen (Zeile 45).
Anschließend werden die Adobe-Metadaten nochmals explizit gelöscht, da diese sonst erhalten bleiben (Zeile 46).
In die fast leere Datei wird nun das IPTC-Feld headline und caption-abstract (notwendig für Alamy) auf den abgefragten Wert des Titels gesetzt (Zeile 49 und 50).
Mit den IPTC-Keywords wird in Zeile 53 genauso verfahren.
Zeile 56 fügt noch den Copyright Owner hinzu und Zeile 59 und 61 geben das Ergebnis aus.
Damit erhält man am Ende eine JPG-Datei, die nur noch die für die Anbieter gedachten und wichtigen Informationen enthält,
- das ICC-Profile (also ob das Bild im sRGB, AdobeRGB, u.s.w. Farbraum vorliegt) und
- den Titel und die Keywords als IPTC-Daten.
Alle anderen Infos, wie Blende, Objektiv, Brennweite, GPS-Position, u.s.w. sind gelöscht.
Ausprobiert habe ich es mit Fotolia, Shutterstock und Alamy, Alle erkennen die Felder richtig.
Bei Fotolia habe ich auch die Umlaute erfolgreich getestet (Alamy ist ja sowieso auf Englisch).
Eine Idee wäre es, einen „Hinzufügen“ Modus anzubieten, um schon gesetzte Keywords zu erweitern, denn momentan werden beim zweiten Aufruf auf die gleiche Datei die alten Felder einfach ersetzt.
Über „for i in *.JPG ; do meta $i ; done“ kann man das Script auf einen kompletten Ordner mit mehren Bildern anwenden.
Wie gesagt, ich glaube nicht, dass es viele Anwender für solch ein Skript gibt, aber selbst wenn es nur wenigen hilft, ist das schon gut.“
Moinmoin,
da es sich um ein normales Shellscript handelt – vermutlich „bash“, der Standard-Shell unter Linux – dürfte es auch auf allen Apple-Rechnern im Terminal (=Kommandozeile) laufen. Mit dem Program „cygwin“ lässt sich auch auf Windows-Rechnern eine Unix-Kommandozeilenumgebung installieren, unter der das Script laufen müsste. „Exiftool“ von Phil Harvey muss man aber in jedem Fall aber separat installieren. Allerdings weiß ich nicht, ob man unter Windows aus cygwin heraus auf die Windows-Installation von Exiftool zugreifen kann, oder ob man hierfür die Linux-Version innerhalb der cygwin-Umgebung benötigt. In diesem Fall muss man möglicherweise auch noch Perl installieren, denn Exiftool basiert darauf.
Noch ein paar Anmerkungen zum Script selber:
Ab Zeile 45 steht mehrmals „-overwrite_original“. Etwas sicherer ist es, statt dessen „-overwrite_original_in_place“ zu verwenden. Dabei wird die Original-Datei nicht gelöscht und neu geschrieben, sondern „nur“ aktualisiert. Auf diese Weise bleiben u.a. auch die Zugriffsrechte der ursprünglichen Datei erhalten und auf dem Mac z.B. auch vorhandene Farb-Label etc. Einziger kleiner Nachteil ist, dass der Prozess etwas langsamer ist, da noch eine temporäre Datei geschrieben und wieder gelöscht werden muss.
In Zeile 45 steht der Parameter „-all= „. Damit werden nicht nur alle IPTC-Daten gelöscht, sondern auch alle anderen Metadaten, also auch sämtliche EXIF-Daten, in denen Aufnahmeparameter, Kamera- und Objektivdaten etc. gespeichert sind. Ich weiß nicht, ob das sinnvoll, notwendig und beabsichtigt ist?! Warum sollen die Bildagenturen und die Kunden nicht wissen, womit ein Foto aufgenommen wurde? Einige Agenturen lehnen Fotos bestimmter Kameras sogar ab, also vielleicht auch, wenn die Info komplett fehlt.
Den Namen des Fotografen kann man auch noch in das dafür vorgesehene IPTC-Feld „Creator“ und ggf. auch noch in das Feld für den Autor der Bildunterschrift „Caption Writer“ eintragen lassen mit den enstprechenden Parametern (s.u.).
Und noch ein Vorschlag zur Geschwindigkeitsoptimierung:
Exiftool startet bei jedem Aufruf den Perl-Interpreter. Das dauert und kostet Rechenleistung. Es wäre deswegen besser, so viele Parameter wie möglich mit einem einzigen Aufruf an Exiftool zu übergeben. Desweiteren kann man den Prefix „iptc:“ bei den Parametern auch weglassen, dann schreibt Exiftool auch zugehörige Daten ggf. in den XMP-Bereich der Metadaten. Aber vielleicht ist es ja Absicht, dass das nicht gemacht wird.
Hier mein Vorschlag für eine kleine Script-Optimierung (an Stelle von Zeilen 45–56 nur ein Aufruf von exiftool):
edo exiftool ‑overwrite_original_in_place ‑m ‑adobe= ‑headline=“${IPTC_Caption}“ ‑caption-abstract=“${IPTC_Caption}“ ‑keywords=“${IPTC_Keywords}“ ‑CopyrightNotice=“${Copyright_Owner}“ ‑Creator=“${Copyright_Owner}“ ‑CaptionWriter=“${Copyright_Owner}“ ${File_Path}
Oh, und natürlich noch Danke für das Teilen des Scripts! Hab ich doch glatt vergessen…
Hallo Olaf,
ich habe eine zweite Version, deiner Vorschläge entsprechend angelegt:
https://bitbucket.org/snippets/mflender/bMzpr
Die Idee, beim Löschen der anderen Metadaten ging in Richtung „need to know“-Prinzip und Datensparsamkeit.
Alamy, Fotolia und Shutterstock haben die so behandelten Bilder von mir angenommen.
Lieber gruß
Malte
sehr sehr schön 🙂