Wie werden Bilder basierend auf Exif-Daten automatisch gedreht?

27861
Peter Smit

Wenn ich mit meiner Kamera (Olympus E-520) Bilder mache, wird in den EXIF-Daten die Ausrichtung gespeichert.

Der Standard-Bildbetrachter unter Ubuntu zeigt diese Bilder korrekt an. Windows-Viewer jedoch nicht.

Gibt es eine Möglichkeit, diese Bilder (falls erforderlich gemäß EXIF) in einem Stapel auf Ubuntu wirklich zu drehen? Zum Beispiel mit einem ImageMagick-Tool?

29

4 Antworten auf die Frage

35
user7963

exiftranund JHead ( jhead -autorot) kann dies tun. exiftrankann dies verlustfrei tun, nicht sicher jhead.

Exiftran sieht aus wie es ist * genau * was ich brauche! Peter Smit vor 14 Jahren 1
jhead -autorot ruft jpegtran auf, das vollkommen verlustfreie Rotation ausführen kann. Ich hatte alles über das verlustfreie Zeug von IJG vergessen. http://jpegclub.org/losslessapps.html Exiftran kann auch verlustfreie Rotation ausführen und ist besser als jpegtran, da es Exif-Informationen in der Bilddatei berücksichtigt. Sie sollten jedoch beachten, dass Sie manchmal (und ich bin mir nicht in allen Details sicher) nicht verlustfrei drehen können. Wenn Sie also ein Skript mit Jhead implementieren, um die erforderliche Rotation zu identifizieren (ähnlich wie bei meiner vorherigen, jedoch mit einer Case-Anweisung, um alle Rotationen zu handhaben), sollten Sie Unterstützung für eine verlustbehaftete Rotation unterstützen. opello vor 14 Jahren 3
Ich habe ein paar Tests mit Exiftran-a (automatisches Drehen basierend auf dem Exif-Orientierungs-Tag) durchgeführt, und es scheint sehr gut zu funktionieren. In Bezug auf die verlustfreie Rotation konnte ich das Quellbild nicht zurückerhalten, indem ich die Umkehrung der durchgeführten Rotation durchführte. ZB exiftool -F 1.jpg -o 2.jpg; Exiftool -F 2.jpg -o 3.jpg; md5sum von 1.jpg und 3.jpg sind nicht dasselbe. Bei genauerer Betrachtung (mit dem binären Araxis-Merge-Vergleich) unterschieden sich manchmal nur die Exif-Header-Informationen, manchmal waren es größere Änderungen in der Datei. Der Bildvergleich von Araxis merge zeigte jedoch keine unveränderten Pixel. opello vor 14 Jahren 1
Ich meinte keine veränderten * Pixel (es waren pixelidentische Bilder). Auch - Ich bin nicht sicher über das Stackoverflow / Superuser-Protokoll, aber ich denke, dmityugov sollte dieses für die Empfehlung des richtigen Tools bekommen. opello vor 14 Jahren 0
Ich habe festgestellt, dass Exiftran einige Metadaten aus der Datei entfernen kann. Bilder, die mit dem Samsung Galaxy S2 aufgenommen wurden, haben beispielsweise ein Zeitstempelfeld (möglicherweise kein EXIF), und Exiftran entfernt es. Exiftran -a verändert auch das Bild, das nicht gedreht werden muss. jhead -autorot ist frei von beiden Ausgaben. OTOH, es fehlt die Option, die Datei mtime beizubehalten (es gibt jedoch einen "-ft-Switch" als Workaround). pfalcon vor 10 Jahren 1
Funktioniert für mich: `ls * .JPG | xargs -I {} Exiftran -i -a {} ` mrgloom vor 6 Jahren 0
12
opello

Das Konvertierungswerkzeug von ImageMagick verfügt über eine -auto-orientierte Flagge, die die Arbeit erledigen sollte.

#!/bin/bash  JHEAD=jhead SED=sed CONVERT=convert  for f in *.jpg do orientation=$($JHEAD -v $f | $SED -nr 's:.*Orientation = ([0-9]+).*:\1:p')  if [ -z $orientation ] then orientation=0 fi  if [ $orientation -gt 1 ] then echo Rotating $f... mv $f $f.bak $CONVERT -auto-orient $f.bak $f fi done 

Ich habe ein schnelles Skript zusammengestellt, um über * .jpg im aktuellen Verzeichnis zu iterieren. Sie können dies leicht ändern, um einen Pfad (1 $) oder was auch immer Sie brauchen, zu übernehmen.

Großartig! Das habe ich nicht gefunden. Ich verwende es mit mogrify, um einen Stapel Bilder zu machen. Nur eine Frage, warum schreibt sie alle Bilder neu, auch wenn sie sich nicht ändern sollen? (Die Hashwerte unterscheiden sich) Peter Smit vor 14 Jahren 1
Ich bin nicht sicher * warum *, aber es scheint eine vollständige Neucodierung zu machen, wobei sowohl der Bildunterschied als auch ein Binärdiff betrachtet werden. opello vor 14 Jahren 0
Wow, das ist großartig. Vielen Dank. Wenn keine weiteren Supergood-Antworten hinzugefügt werden, werde ich diese sicherlich akzeptieren. Peter Smit vor 14 Jahren 0
2
swatkat

Sie können dazu XnView verwenden. Auf diesen Seiten finden Sie Informationen zur Verwendung von XnView für die automatische Rotation im Stapelmodus:

In Windows können Sie dies mit IrfanView tun . Auf der IrfanView-Website (FAQs):

F: Wie verwende ich JPG-verlustfreie Operationen (Rotation, IPTC, Comment) im Batch-Modus?

A: Starten Sie das Thumbnail-Fenster, öffnen Sie den Ordner mit JPGs, wählen Sie viele JPGs aus und sehen Sie im Thumbnail-Menü Datei für JPG-Verlustfreie Operationen -> Verlustfreie Transformationen mit ausgewählten Thumbs. Hinweis: Die Auto-Rotation-Option funktioniert nur, wenn das EXIF-Orientierungs-Tag ordnungsgemäß gespeichert wurde (nicht oben links).

1
Andy Gee

Mit ImageMagick können Sie auch mogrify verwenden, um die Dateien zu drehen und das gedrehte Bild wieder in die ursprünglichen Dateinamen zu schreiben.

mogrify -auto-orient *.jpg