Standardanwendung zum automatischen Drehen von Bildern basierend auf EXIF

9486
Tschareck

Es gibt wenige Anwendungen, die ich auf fast jedem Windows 7-Computer installiert habe. Dies sind Anwendungen wie:

  • Windows Live Gallery (Windows Live Essentials)
  • Picasa
  • Alles, was mit Windows 7 aus der Box kommt

Welche dieser Anwendungen kann alle Bilder in einem Ordner basierend auf EXIF-Informationen stapelweise drehen ?

Ich weiß, dass es viele Anwendungen gibt, die genau dies tun können, aber macht das eine Standardanwendung? Manchmal kann ich nichts Neues installieren und verwende verschiedene Computer an verschiedenen Orten.

Lassen Sie mich wiederholen - ich möchte Bilder basierend auf EXIF-Informationen drehen, nicht ALLE.

6

5 Antworten auf die Frage

8
jdh

In Windows 7 ist PowerShell standardmäßig installiert, mit dem die Bildbearbeitung über WIA (Windows Image Aquisition) oder das .Net-Systemzeichnungsobjekt durchgeführt werden kann. Hier ist ein schnelles Powershell-Skript, das die .Net-Methode verwendet, um alle im aktuellen Verzeichnis gefundenen JPGs um 90 Grad im Uhrzeigersinn zu drehen.

[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") dir *.jpg | ForEach-Object { $image = [System.Drawing.image]::FromFile( $_ ) $image.rotateflip("Rotate90FlipNone") $image.save($_) } 

Die Drehung ist in 90-Grad-Schritten begrenzt, einschließlich der Ausrichtung des Bildumschlags.

Dies funktioniert großartig, es fehlt jedoch ein wichtiges Detail in der Frage: Drehen des Bildes in die richtige Ausrichtung basierend auf EXIF-Metadaten. iglvzx vor 11 Jahren 0
Wenn der Rotationsvorgang auf der Anforderung basiert, dass für die Kamera der Orientierungssensor verfügbar ist und für alle Bilder das EXIF-Orientierungsfeld festgelegt ist, können Sie dieses Attribut mit der WIA-Bibliothek überprüfen. So prüfen Sie, ob es vorhanden ist und welchen Wert es hat: if ($ imageWIA.Properties.Exists ("274")) {$ imageWIA.Properties.Item ("274"). Wert} Wo die Werte lauten: $ orientation = @ { 1 = "horizontal"; 3 = "180 Grad drehen"; 6 = "90 Grad im Uhrzeigersinn drehen"; 8 = "Um 270 Grad im Uhrzeigersinn drehen"} Außerdem müssen Sie WIA-Referenz und Bild in WIA laden. jdh vor 11 Jahren 0
3
George

Ich bin mir ziemlich sicher, dass es keine Möglichkeit gibt, Bilder basierend auf EXIF-Informationen nur mit Standard-Apps zu drehen, die mit Windows geliefert werden . Ich dachte jedoch, dass ich zum Wohle anderer, die weniger strenge Anforderungen haben, zwei andere Möglichkeiten erwähne.

Ich würde XNView empfehlen: http://www.xnview.com/de/xnview/ (nicht XNViewMP) für verlustfreie JPEG-Rotation (wenn Sie mit dem Verlust einiger Pixel an den Rändern in Ordnung sind, da dies eine inhärente Grenze für verlustfreies JPEG ist Operationen): XNView

Wenn Sie mit dem Verlust von Pixeln an den Rändern nicht zufrieden sind und / oder die Ergebnisse in einem anderen Format speichern möchten oder zusätzliche Manipulationen auf intuitive Weise durchführen möchten (die Stapelverarbeitung von XNView ist für IMHO etwas schwierig), empfehle ich Batch Image Resizer, eine kostenpflichtige App: http://www.binarymark.com/products/batchimageresizer/default.aspx Batch Image Resizer

BEARBEITEN: Die neue Version von Batch Image Resizer unterstützt die automatische Bildrotation basierend auf der Gesichtserkennung . Es kann menschliche Gesichter in Ihren Fotos erkennen und Bilder automatisch entsprechend drehen. Dies kann nützlich sein, wenn beispielsweise EXIF-Orientierungs-Tags fehlen und Sie Hunderte von Bildern haben, die Sie drehen müssen:

Gesichtsbasierte automatische Rotation

Haftungsausschluss: Ich verwende täglich beide Programme: XNView zum Anzeigen / Organisieren von Bildern, Batch Image Resizer für die Massenbildverarbeitung.

2
JamesThomasMoon1979

jhead + jpegtrans

Verwenden Sie jhead (was erfordert jpegtran für die Auto-Rotation - Funktion).

Von der Windows-Shell aus

jhead.exe -autorot image.JPG 

Verwenden Sie für einen Stapel von Bildern in einem Verzeichnis Shell-Globbing, z

jhead.exe -autorot pics\*.JPG` 

jhead ändert keine Dateien, die nicht gedreht werden müssen.


zusätzlich

Stellen Sie sicher, dass Sie jheadtran.exesich in der Umgebung befinden PATH, z PATH=%PATH%;C:\Path\to\jpegtran.

Ich schlage vor, das -ftFlag auf " Dateiänderungszeit auf Exif-Zeit setzen " zu setzen.

1
user881208

Wechseln Sie in das Verzeichnis, in dem sich Ihre Fotos befinden. Wechseln Sie zur Detailansicht. Klicken Sie mit der rechten Maustaste auf eine Spalte, und klicken Sie auf Mehr. Zutreffendes EXIF-Detail ankreuzen und OK. Filtern Sie nun alle Dateien anhand dieses EXIF-Details, und wählen Sie schließlich alle Fotos aus. Klicken Sie mit der rechten Maustaste, um entweder im oder gegen den Uhrzeigersinn zu drehen.

Ab 2018 sollte dies die ausgewählte Antwort sein. mins vor 5 Jahren 0
-1
leeand00

Verwenden Sie Folgendes zum Drehen eines aus einer CSV-Datei stammenden JPGs:

function batchRotateFromCSV([Parameter(Mandatory=$True)] $csvFile) { [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")  $imageFormat = "System.Drawing.Imaging.ImageFormat" -as [type]  Import-Csv $csvFile | Select PathToImage | ForEach { $image = [System.Drawing.image]::FromFile($_.PortraitFile) $image.RotateFlip([System.Drawing.RotateFlipType]::Rotate90FlipNone) $image.save($_.PathToImage, $imageFormat::jpeg) } } 

Sie können natürlich auch das Dateiformat des Bildes ändern .

Beachten Sie, dass PathToImagedies der Name der Kopfzeile in Ihrer CSV ist.

Lesen Sie die Frage sorgfältig, bevor Sie antworten traveh vor 7 Jahren 0
@traveh Kannst du in der Geschichte nachsehen, ob der OP die Frage nicht geändert hat, seit ich das beantwortet habe? leeand00 vor 7 Jahren 0
Ja, das habe ich tatsächlich getan. Tat er nicht Er hat es betont und wiederholt es für Leute, die sich nicht die Mühe machen, die Frage richtig zu lesen, aber er hat nichts geändert. traveh vor 7 Jahren 0