Viele Digitalkameras verfügen über einen Gravitationssensor, der erkennt, wie die Kamera beim erstellen des Bildes gehalten wurde. Diese Information kann man dazu nutzen, um das Bild automatisch richtig zu drehen. Die Information wird im EXIF-Tag “Orientation” des Bildes gespeichert. Mit dem Tool jhead kann man diese Information auslesen und das Foto automatisch drehen lassen.
EXIF-Daten
Wird jhead keine Option angegeben, werden einige EXIF-Informationen angezeigt:
File name : foto.jpg
File size : 2040209 bytes
File date : 2011:01:16 18:22:37
Camera make : Canon
Camera model : Canon DIGITAL IXUS 80 IS
Date/Time : 2011:01:14 23:05:42
Resolution : 2592 x 1944
Orientation : rotate 90
Flash used : Yes (auto)
Focal length : 6.2mm (35mm equivalent: 39mm)
CCD width : 5.72mm
Exposure time: 0.017 s (1/60)
Aperture : f/2.8
Focus dist. : 0.48m
ISO equiv. : 250
Whitebalance : Auto
Metering Mode: pattern
Das Tag “Orientation” sagt, dass das Bild um 90° gedreht wurde. Aber jetzt weiss man immer noch nicht, ob das Bild im Uhrzeigersinn, oder im Gegenuhrzeigersinn gedreht werden muss.
Noch mehr Informationen kann man jhead mit der Option -v entlocken:
Orientation = 6
Orientation : rotate 90
Das Orientation-Tag beseitzt den Wert 6. In den Spezifikationen von den EXIF-Tags steht folgendes dazu:
The 0th row is the visual right-hand side of the image, and the 0th column is the visual top.
Daraus lässt sich schliessen, dass das Bild um 90° im Uhrzeigersinn gedreht werden muss.
Das Foto drehen
Mit der Option -autorot kann jhead das Foto automatisch drehen.
Modified: foto.jpg
Das eigentliche Rotieren übernimmt nicht jhead, sondern jpegtran.
Das Orientation-EXIF-Tag besitzt nun den Wert 1. Das Bild muss also nicht mehr gedreht werden.
Orientation = 1
Orientation-Tag entfernen
Möchte man ein Foto nicht rotieren, aber das Orientation-EXIF-Tag trotzdem entfernen, kann man das mit der Option -norot machen:
Alle Fotos in einem Verzeichnis drehen
Meistens will ich alle Fotos in einem Verzeichnis richtig drehen. Das kann man folgendermassen machen:
Die Shell löst den regulären Ausdruck *.[jJ][pP][gG] auf, und übergibt alle passenden Dateinamen an jhead weiter.
Diesen Befehl habe ich in einem Skript, damit ich jederzeit jhead so aufrufen kann:
################################################################
#
# imagerotate
# Dreht Fotos anhand des EXIF-Tag Orientation
#
# 2011-01-16; Emanuel Duss; Erste Version
#
################################################################
################################################################
# Main
jhead -autorot *.[jJ][pP][gG]
# EOF
Natürlich kann man auch einen Alias in der .bashrc eintragen:
Alle Fotos drehen
Folgendermassen kann man alle Bilder, welche sich im Ordner “~/Bilder” befinden automatisch drehen:
Somit ist die gesamte Bildersammlung richtig gedreht.
Links und weitere Informationen
- EXIF Spezifikationen: http://www.exif.org/specifications.html
- Projektseite von jhead: http://www.sentex.net/~mwandel/jhead/
Ich danke Ihnen für detaillierte Unterstützung