en Tipps & Tricks: Verwaltung von Digitalfotos

Hier habe ich einige Tipps und Best Practices gesammelt, die sich für mich zur Verwaltung meiner Digitalfotos bewährt haben.

WICHTIG: Bei allen unten aufgeführten Tipps gibt es keine Funktionsgarantie, und gerade bei Tipps, in denen Dateien gesichert oder geändert / manipuliert werden, ist unter Umständen Datenverlust möglich! Die Tipps funktionieren bei mir alle problemlos - sonst hätte ich sie ja nicht hier zusammengestellt ;) - aber das Erstellen aktueller Backups vor dem Ausprobieren ist obligatorisch! Wenn Daten verloren gehen, kann ich nichts dafür.

Digitalfotos verlustfrei automatisch richtig drehen

Viele Digitalkameras, wie z.B. praktisch alle digitalen Fotoaparate von Canon, speichern dank eines Schwerkraftsensors in jedem Foto, ob es im Hoch- oder Querformat aufgenommen wurde. Mit dieser Information kann ein Bildbetrachter das Foto vor der Anzeige direkt korrekt ausrichten.

Da nicht alle Bildbetrachter dies beherrschen, besteht auch die Möglichkeit, das Bild in einem Vorverarbeitungsschritt dauerhaft verlustfrei in die richtige Position zu rotieren. Dazu werden unter Linux häufig die Tools jhead (Debian-Package: jhead) oder exifautotran (Debian-Package: libjpeg-progs) verwendet, welche die Anpassung allerdings nur unvollständig vornehmen: Beispielsweise wird bei beiden Tools ein in das Foto eingebettetes Vorschaubild nicht mitrotiert und die EXIF Auflösungsangaben werden nicht korrekt angepasst.

Gründlichere Arbeit erledigt exiftran (Debian-Package: exiftran), welches die wichtigsten EXIF-Informationen nach der Rotation ebenfalls korrigiert. Die Verwendung ist denkbar einfach: exiftran -a -i *.JPG dreht alle .JPG-Dateien im aktuellen Verzeichnis.

Mit der oben angegebenen Kommandozeile wird allerdings wirklich jede Datei neu geschrieben, auch wenn eigentlich nichts geändert werden muss. Wer dies verhindern möchte, z.B. damit ein inkrementelles Backup die eigentlich unveränderten Dateien nicht als geändert interpretiert, kann dies beispielsweise folgendermaßen tun: find -iname '*.jpg' -type f -exec sh -c '[ "0$(jpegexiforient -n "{}")" -le "1" ] || exiftran -ai "{}"' \;. Damit wird jedes Foto zunächst analysiert und nur dann gedreht, wenn es wirklich notwendig ist.

Dafür wird dann allerdings noch, wie man sieht, das Tool jpegexiforient (Debian-Package: libjpeg-progs) für die Analyse der Dateien benötigt.

JPEG Comment-Felder (IPTC Comment-Felder) und EXIF UserComment-Felder synchronisieren

Vermutlich steht man irgendwann mal so wie ich vor dem Punkt, dass man bei einer größeren Anzahl von JPEG-Bildern automatisiert Bildparameter anpassen möchte, wie z.B. eine automatische Verarbeitung der Kommentarfelder. In meinem Fall wollte ich bei einigen hundert Digitalfotos den Inhalt des JPEG Comment Feldes automatisch in das EXIF UserComment-Feld kopieren.

Hintergrund: Ich hatte bei den Bildern die Kommentare mit gwenview (Debian-Package: gwenview) gesetzt, welches das JPEG Comment-Feld schreibt, und wollte, dass mein Online-Fotoalbum diese Bildkommentare importiert - das verwendete Gallery2 (Debian-Package: gallery2) extrahiert aber nur EXIF UserComment-Kommentare...

Eine mächtige Lösung bietet exiv2 (Debian-Package: exiv2), mit dem sich praktisch alle Metadatenfelder einer JPEG / EXIF-Datei auslesen und setzen lassen.

exiv2 -pc FOTO.JPG liest den JPEG-Kommentar aus einem Digitalfoto aus. exiv2 -M"set Exif.Photo.UserComment \"charset=Unicode Neuer Kommentar\"" FOTO.JPG setzt im Gegenzug den EXIF UserComment.

Ein einfaches Umkopieren der JPEG Comments in die EXIF UserComments in allen JPEG-Dateien in einem ganzen Verzeichnisbaum etwa geht z.B. folgendermaßen: find VERZEICHNIS -iname '*.jpg' -type f -exec sh -c 'exiv2 -M"set Exif.Photo.UserComment \"charset=Unicode $(exiv2 -pc "{}")\"" "{}"' \; Voraussetzung dafür ist, dass die JPEG Kommentare in Unicode-Zeichenkodierung vorliegen.

Falls die JPEG-Kommentare einen unbekannten Zeichensatz besitzen, man aber die EXIF UserComment-Felder trotzdem korrekt setzen und in einem auch die JPEG-Comments nach UniCode konvertieren möchte, ist ein bißchen Magie angesagt. ;) Aber auch das ist kein Problem, was sich nicht mit einer Befehlszeile lösen ließe... ;)

Aber der Übersichtlichkeit halber das Vorghene in drei Schritten. Neben exiv2 wird zur Zeichensatzerkennung und -konvertierung noch das Tool konwert (Debian-Package: konwert) (Achtung: NICHT http://sourceforge.net/projects/konwert/! Das ist ein anderes Tool.) benötigt.

  1. Kommentare aus JPEGs in reine Textdateien mit unbekannter Zeichensatzkodierung extrahieren: find -iname '*.jpg' -type f -exec sh -c 'exiv2 -pc "{}" > "{}".comment' \;
  2. Encoding erkennen und nach Unicode UTF8 konvertieren: find -iname '*.jpg.comment' -exec sh -c 'konwert any/de-utf8 "{}" -o "{}".utf8' \;
  3. UTF8-Kommentar in JPEG Comment und EXIF UserComment-Felder re-implantieren: find -iname '*.jpg' -type f -exec sh -c 'exiv2 -c "$(cat "{}.comment.utf8")" -M"set Exif.Photo.UserComment \"charset=Unicode $(cat "{}.comment.utf8")\"" "{}"' \;

Den Aufnahmeort (Geographische Koordinaten) in Digitalfotos speichern

Vielleicht kennst du das Problem, beim durchsehen älterer (Urlaubs-)Fotos darüber zu rätseln, wann und wo die jetzt genau aufgenommen wurden... Bei der Aufnahme damals war dir halt klar, dass du das niemals vergessen würdest, oder du hattest sogar beste Absichten, Datum und Ort der Aufnahme sehr bald nach der Aufnahme zu dokumentieren... ;)

Immerhin speichern inzwischen selbst die billigesten Digitalkameras zumindest die Aufnahmezeit in den Fotos, womit dieser automatisch dokumentiert ist - vorausgesetzt, die Uhr der Digicam geht halbwegs genau... ;) Die gute Nachricht ist jetzt, dass mit dieser Zeitinformation in Verbindung mit einem relativ einfachen - und damit hoffentlich nicht zu teuren - GPS-Empfänger der Aufnahmeort jedes Bildes unsichtbar direkt in der Bilddatei selber gespeichert werden kann!

Das heißt, mit der passenden, und vielleicht häufig bereits vorhandenen, Ausrüstung erledigt sich das eingangs geschilderte Problem auch für Leute, die ähnlich diszipliniert sind wie ich wenn es darum geht, Urlaubsausflüge und -fotos zu dokumentieren... ;)

Als kurze Anmerkung: Es gibt auch Digitalkameras mit eingebauten GPS-Empfänger, die den Aufnahmeort jedes Fotos automatisch selber in der Bilddatei speichern. Diese Kameras sind allerdings nicht wirklich billig und die Auswahl der verfügbaren Modelle ist vergleichsweise eingeschränkt. Außerdem hat ein separater GPS-Empfänger Vorteile, wenn es um die Aufzeichnung von Bewegungsprofilen (Tracks) von Ausflügen u.ä. geht.

Um normalen Digitalfotos die Aufnahmekoordinaten nachträglich hinzufügen zu können, benötigt man neben dem Foto eine Trackaufzeichnung seines GPS-Gerätes zu diesem Zeitpunkt. Mittels des im Foto gespeicherten Aufnahmezeitpunktes und der vom GPS-Gerät aufgezeichneten Zeit-/Ortsangaben kann dann der Aufnahmeort des Fotos rekonstruiert werden. Da diese Rekonstruktion völlig von dem gespeicherten Aufnahmezeitpunkt abhängt, sollte dieser so genau wir irgend möglich sein, oder zumindest die Abweichung von der echten Uhrzeit sollte exakt bekannt sein. (Dies lässt sich beispielsweise dadurch ereichen, dass man die Zeitanzeige des GPS-Empfängers fotographiert. Es ist sinnvoll, mit der daraus bekannten Zeitabweichung die in den Fotos gespeicherten Zeiten z.B. mit dem Tool exiv2 zu korrigieren.) Man sollte im Hinterkopf behalten, dass die Uhren in Digitalkameras sehr ungenau gehen und alle paar Tage nachgestellt werden sollten bzw. alle paar Tage ein Zeitsynchronisationsfoto erstellt werden sollte. Je genauer die Aufnahmezeiten der Fotos stimmen, desto genauer werden die berechneten Aufnahmeorte der Fotos.

Wenn alles vorbereitet ist, berechnet das Programm gpscorrelate (Debian-Paket: gpscorrelate) die Aufnahmeorte der Fotos vollautomatisch.

Das folgende Beispiel speichert den Aufnahmeort in allen *.JPG-Fotos im aktuellen Verzeichnis, ausgehend von den geographischen Zeit-/Ortsangaben in track.gpx. Dabei wird eine lineare Interpolation zwischen allen aufgezeichneten Bewegungspunkten verwendet (aufgrund des --ignore-tracksegs Parameters). Das Beispiel geht davon aus, dass die Aufnahmezeitpunkte der Fotos absolut genau sind, aber in Lokalzeit und 2 Stunden von der GMT/UTC-Zeit abweichen. gpscorrelate -g track.gpx --timeadd +2 --ignore-tracksegs *.JPG

Valid XHTML 1.0 StrictValid CSS!
-- /software/tipps_digitalfoto_de.php#20090510-002246  [0] © Gunter Ohrner 2007-2013. Powered by CubbiCMS