Skip to content

JPEG-Kommentar mit Nautilus-Skript bearbeiten (Gnome/Ubuntu Linux)

Zu Windowszeiten war ich ein großer Fan des Bildbetrachtungsprogramms IrfanView. Ein Feature, das ich besonders mochte, war die Möglichkeit, JPEG-Fotos um einen kurzen oder bis zu 64.000 Zeichen langen Kommentartext zu ergänzen, der direkt (und unsichtbar) in der Bilddatei gespeichert wurde und dadurch alle Kopier-, Verschiebe- und sonstigen Aufräumaktionen unbeschadet überlebte. Leider ist die Unterstützung des JPEG-Kommentarfeldes in den meisten Linux-Bildbetrachtern überhaupt nicht angesagt. Manche, wie gThumb, haben zwar eine Kommentarfunktion, speichern den Text aber separat und nicht in der Bilddatei, was die Funktion für mich wertlos macht.
Zum Glück gibt es in Nautilus die Möglichkeit, das Rechtsklickmenü um eigene Skripte zu erweitern, die einfach im Ordner ~/.gnome2/nautilus-scripts/ abgelegt werden. Jetzt kann ich meine Bildkommentare bequem im Texteditor bearbeiten. Alles was benötigt wird, befindet sich im Paket "libjpeg-progs". Darin sind zwei Konsolenprogramme namens "rdjpgcom" und "wrjpgcom" enthalten, die das JPEG-Kommentarfeld lesen und schreiben können. Nun muss nur noch im Skriptverzeichnis von Nautilus eine ausführbare Textdatei angelegt werden. Diese könnte beispielsweise "JPEG-Kommentar bearbeiten" heißen und folgenden Inhalt haben:
#!/bin/bash
rdjpgcom $1>$1_comment.txt
gedit $1_comment.txt
mv $1 $1_original.jpg
wrjpgcom -replace $1_original.jpg < $1_comment.txt > $1

Dieses Grundgerüst benötigt, um richtig benutzerfreundlich zu sein, noch ein paar Abfragen. So sollte das fertige Skript zum Beispiel testen, ob der von Nautilus übergebene Dateiname "$1" überhaupt zu einer JPEG-Datei gehört oder ob der Kommentar überhaupt geändert wurde. Hinterher aufzuräumen und die beiden zwischenzeitlich angelegten Dateien mit der Originalbilddatei und dem Kommentartext wieder zu löschen, wäre auch keine schlechte Idee. In der vorliegenden Form macht das Miniskript folgendes (in Nautilus sei, um nicht zu abstrakt zu werden, die Datei "bild.jpg" ausgewählt worden): Es liest den Kommentar aus "bild.jpg" und schreibt ihn in die Datei "bild.jpg_comment.txt". Diese wird im Texteditor bearbeitet, das Bild in die Datei "bild.jpg_original.jpg" gesichert, aus dieser wird der alte Kommentar entfernt und der Rest der JPEG-Datei zusammen mit dem neuen Kommentar wieder als "bild.jpg" gespeichert.

Nautilus "vergisst" Datum und Uhrzeit beim Kopieren unter Ubuntu 8.04

In der neuen GNU/Linux-Version Ubuntu 8.04 (Hardy Heron) weist der Gnome-Dateimanager Nautilus eine Eigenheit auf, die von einigen als Feature, von anderen als Bug angesehen wird: Das Datum einer Datei wird auf den Moment des Kopiervorgangs gesetzt, nicht auf das Entstehungsdatum der Ursprungsdatei. Es lassen sich mehrere Gründe konstruieren, warum das so sein soll, angefangen von "das haben wir schon immer so gemacht" (gemeint ist das Verhalten des Shell-Befehls "cp"), über "eine Kopie ist eine neue Datei, das soll man gefälligst auch sehen können" bis zu "Linux ist schließlich nicht Windows".

Ohne die Diskussion über Sinn und Unsinn dieses Verhaltens fortführen zu wollen (das kann, wer mag, hier tun), stand ich plötzlich vor dem Problem, einige hundert Digitalfotografien in diversen Ordnern zu haben, die ein völlig falsches Dateidatum aufwiesen. Für alle, denen ähnliches widerfahren ist: es gibt ein einfaches Programm, das das Dateidatum einer Fotografie wieder auf deren Aufnahmedatum zurücksetzen kann. Es heißt jhead, wurde von Matthias Wandel geschrieben und repariert das Datum aller Foto-Dateien eines Ordners mit einem einfachen Aufruf:
jhead -ft *.JPG

JHead gibt es für Linux, OS X und Windows. Unter Ubuntu Linux ist es Bestandteil des Universe-Repositorys und kann mittels Synaptic installiert werden. Ein großes Dankeschön an Matthias Wandel für sein tolles Programm!

Nachtrag (20. Juni 2008): Der Fehler ist behoben worden und die neue Version der dafür zuständigen GLib-Bibliothek - libglib2.0-0 in der Version 2.16.3-1ubuntu3 - wird in Kürze über die Aktualisierungsfunktion verfügbar sein.