Kostenloses Linux-​Skript zur Verschlagwortung (Gastartikel)

Vor eini­gen Wochen hat mir der Hobbyfotograf Malte Flender eine Email geschickt mit dem Hinweis auf ein von ihm geschrie­be­nes klei­nes Skript für Linux, wel­ches die Verschlagwortung von Bildern ver­ein­fa­chen soll.

Er erklärt es so:script-code

Als Informatik-​Student möch­te ich ger­ne die Bilderverwaltung mit Linux-​Bordmitteln erle­di­gen. Aus die­sem Grund habe ich mir ein klei­nes Shellscript geschrie­ben, um die Metadaten der Bilder zu bearbeiten.

Ich weiß, dass kaum jemand Linux zur Bildverarbeitung benut­zen wird, aber weil es ja trotz der klei­nen Nutzergemeinde jeman­dem hel­fen könn­te, wür­de ich das Script auch ger­ne ande­ren zukom­men lassen.

Deswegen fin­den sie das Script unter die­ser 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 mit­tels ./​meta <Dateiname> auf.
Weil sich der „Copyright Owner“ in der Regel nicht ändert wird er in Zeile 18 fix ein­ge­setzt (muss für den jewei­li­gen Anwender geän­dert werden).

Als ers­tes wird der Dateiname aus­ge­ge­ben, damit man weiß, wel­che Datei man gera­de bearbeitet.
Nun wird man gefragt, wie denn der Titel des Bildes lau­ten soll, z.B. „Rote Rose auf grü­nem Feld“.
Als nächs­tes fragt das Skript nach den Keywords, z.B. „Rot, Rose, Idylle, Feld, Sommer, u.s.w.“
Zum Schluss wer­den alle Metadaten des Bildes aus­ge­ge­ben, so das man sie kon­trol­lie­ren kann.

Soviel zur Benutzung, tech­nisch pas­siert 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 fra­gen den Benutzer nach Title und Keywords und spei­chern die­se in den Variablen IPTC_​Caption und IPTC_​Keywords ab.
Danach wird exif­tool (genia­les Tool von Phil Harvey) auf­ge­ru­fen, um zunächst alle Metadaten bis auf das ICC-​Farbprofil zu löschen (Zeile 45).
Anschließend wer­den die Adobe-​Metadaten noch­mals expli­zit gelöscht, da die­se sonst erhal­ten blei­ben (Zeile 46).
In die fast lee­re Datei wird nun das IPTC-​Feld head­line und caption-​abstract (not­wen­dig für Alamy) auf den abge­frag­ten Wert des Titels gesetzt (Zeile 49 und 50).
Mit den IPTC-​Keywords wird in Zeile 53 genau­so verfahren.
Zeile 56 fügt noch den Copyright Owner hin­zu 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 gedach­ten und wich­ti­gen Informationen enthält,

  • das ICC-​Profile (also ob das Bild im sRGB, AdobeRGB, u.s.w. Farbraum vor­liegt) und
  • den Titel und die Keywords als IPTC-Daten.

Alle ande­ren Infos, wie Blende, Objektiv, Brennweite, GPS-​Position, u.s.w. sind gelöscht.

Ausprobiert habe ich es mit Fotolia, Shutterstock und Alamy, Alle erken­nen die Felder richtig.
Bei Fotolia habe ich auch die Umlaute erfolg­reich getes­tet (Alamy ist ja sowie­so auf Englisch).

Eine Idee wäre es, einen „Hinzufügen“ Modus anzu­bie­ten, um schon gesetz­te Keywords zu erwei­tern, denn momen­tan wer­den beim zwei­ten Aufruf auf die glei­che Datei die alten Felder ein­fach ersetzt.

Über „for i in *.JPG ; do meta $i ; done“ kann man das Script auf einen kom­plet­ten Ordner mit meh­ren Bildern anwenden.

Wie gesagt, ich glau­be nicht, dass es vie­le Anwender für solch ein Skript gibt, aber selbst wenn es nur weni­gen hilft, ist das schon gut.“

4 Gedanken zu „Kostenloses Linux-​Skript zur Verschlagwortung (Gastartikel)“

  1. Moinmoin,

    da es sich um ein nor­ma­les Shellscript han­delt – ver­mut­lich „bash“, der Standard-​Shell unter Linux – dürf­te es auch auf allen Apple-​Rechnern im Terminal (=Kommandozeile) lau­fen. Mit dem Program „cyg­win“ lässt sich auch auf Windows-​Rechnern eine Unix-​Kommandozeilenumgebung instal­lie­ren, unter der das Script lau­fen müss­te. „Exiftool“ von Phil Harvey muss man aber in jedem Fall aber sepa­rat instal­lie­ren. Allerdings weiß ich nicht, ob man unter Windows aus cyg­win her­aus auf die Windows-​Installation von Exiftool zugrei­fen kann, oder ob man hier­für die Linux-​Version inner­halb der cygwin-​Umgebung benö­tigt. In die­sem Fall muss man mög­li­cher­wei­se auch noch Perl instal­lie­ren, denn Exiftool basiert darauf.

    Noch ein paar Anmerkungen zum Script selber:

    Ab Zeile 45 steht mehr­mals „-overwrite_​original“. Etwas siche­rer ist es, statt des­sen „-overwrite_​original_​in_​place“ zu ver­wen­den. Dabei wird die Original-​Datei nicht gelöscht und neu geschrie­ben, son­dern „nur“ aktua­li­siert. Auf die­se Weise blei­ben u.a. auch die Zugriffsrechte der ursprüng­li­chen Datei erhal­ten und auf dem Mac z.B. auch vor­han­de­ne Farb-​Label etc. Einziger klei­ner Nachteil ist, dass der Prozess etwas lang­sa­mer ist, da noch eine tem­po­rä­re Datei geschrie­ben und wie­der gelöscht wer­den muss.

    In Zeile 45 steht der Parameter „-all= „. Damit wer­den nicht nur alle IPTC-​Daten gelöscht, son­dern auch alle ande­ren Metadaten, also auch sämt­li­che EXIF-​Daten, in denen Aufnahmeparameter, Kamera- und Objektivdaten etc. gespei­chert sind. Ich weiß nicht, ob das sinn­voll, not­wen­dig und beab­sich­tigt ist?! Warum sol­len die Bildagenturen und die Kunden nicht wis­sen, womit ein Foto auf­ge­nom­men wur­de? Einige Agenturen leh­nen Fotos bestimm­ter Kameras sogar ab, also viel­leicht auch, wenn die Info kom­plett fehlt.

    Den Namen des Fotografen kann man auch noch in das dafür vor­ge­se­he­ne IPTC-​Feld „Creator“ und ggf. auch noch in das Feld für den Autor der Bildunterschrift „Caption Writer“ ein­tra­gen las­sen mit den enst­pre­chen­den Parametern (s.u.).

    Und noch ein Vorschlag zur Geschwindigkeitsoptimierung:
    Exiftool star­tet bei jedem Aufruf den Perl-​Interpreter. Das dau­ert und kos­tet Rechenleistung. Es wäre des­we­gen bes­ser, so vie­le Parameter wie mög­lich mit einem ein­zi­gen Aufruf an Exiftool zu über­ge­ben. Desweiteren kann man den Prefix „iptc:“ bei den Parametern auch weg­las­sen, dann schreibt Exiftool auch zuge­hö­ri­ge Daten ggf. in den XMP-​Bereich der Metadaten. Aber viel­leicht ist es ja Absicht, dass das nicht gemacht wird.

    Hier mein Vorschlag für eine klei­ne Script-​Optimierung (an Stelle von Zeilen 45–56 nur ein Aufruf von exiftool):

    edo exif­tool ‑overwrite_​original_​in_​place ‑m ‑ado­be= ‑headline=“${IPTC_Caption}“ ‑caption-abstract=“${IPTC_Caption}“ ‑keywords=“${IPTC_Keywords}“ ‑CopyrightNotice=“${Copyright_Owner}“ ‑Creator=“${Copyright_Owner}“ ‑CaptionWriter=“${Copyright_Owner}“ ${File_​Path}

  2. Hallo Olaf,

    ich habe eine zwei­te Version, dei­ner Vorschläge ent­spre­chend angelegt:
    https://bitbucket.org/snippets/mflender/bMzpr
    Die Idee, beim Löschen der ande­ren Metadaten ging in Richtung „need to know“-Prinzip und Datensparsamkeit.
    Alamy, Fotolia und Shutterstock haben die so behan­del­ten Bilder von mir angenommen.

    Lieber gruß
    Malte

Kommentare sind geschlossen.