Wie drehe ich viele Digitalfotos in einem Arbeitsgang um 180 Grad?

Ich habe mehrere tausend Bilder mit einer GoPro aufgenommen, die auf dem Kopf stehen.

Ich suche nach einer Möglichkeit, wirklich einer App, die sie alle um 180 Grad in einem Vorgang drehen kann.

Ich habe mir jede Option in GoPros eigener Software angesehen, finde diese aber nicht nur für Standbilder. Sie können beim Erstellen eines Videos drehen, aber ich möchte die einzelnen Bilder behalten.

Ich bin auf Windows.

jpegtran ist der richtige Weg. Es kann JPEGs verlustfrei drehen und/oder spiegeln und ist einfach von einem Skript aus aufzurufen, da es sich um eine CLI-App handelt.

Antworten (13)

Ich würde jede der Anwendungen aus dieser Liste bei JPEGclub.org empfehlen , die Software für die Independent JPEG Group entwickelt und pflegt. Sie haben einen kostenlosen Code namens jpegtran, der einige grundlegende Transformationen (wie Rotation) durchführen kann, ohne das Bild neu zu codieren.

Das „naive“ Drehen von Bildern (Rendern in eine Bitmap, Neuausrichtung der Bitmap und erneutes Speichern) kann zu vermehrten JPEG-Artefakten und größeren Dateien mit weniger nützlichen Daten führen.

Die obige Liste enthält Software, von der bekannt ist, dass sie es "richtig" macht. Andere Software kann es auch (vielleicht mit einer anderen Codebasis), aber ImageMagick gehört leider nicht dazu. Aber seit August 2016 gibt es 87 verschiedene Optionen für viele verschiedene Computerplattformen, einschließlich Windows.


Hinweis aus Kommentaren: Das OP hat diese Schleife basierend auf dieser Antwort verwendet:

FOR %f IN (.\Src\*.*) DO jpegtran.exe -rotate 180 %f .\Rotated\%~nxf

mit guten Ergebnissen.

Beachten Sie, dass die verlustfreie Rotation nur funktioniert, wenn jede Dimension jedes Bildes ein Vielfaches von 16 Pixeln ist – 8, wenn kein Chroma-Subsampling verwendet wird. Andernfalls gehen entweder die überzähligen Pixel verloren oder das Bild wird mit einem Rand aufgefüllt. Zum Beispiel ist 1080 kein Vielfaches von 16!
Ich unterstütze die Empfehlung von jpegtran; noch besser, wenn es Ihnen wichtig ist, die Miniaturansicht und das Tag des EXIF Orientation​​konsistent zu halten, könnten Sie in Betracht ziehen exiftran, was unerklärlicherweise in der JPEGclub-Liste fehlt, aber verlustfrei ist. Mein Befehl (unter Linux) dafür wäre exiftran -i -1 *.jpgor find . -name '*.jpg' -print0 | xjobs -0 -l 10 exiftran -i -1; Dies muss für die Windows-Shell angepasst werden.
@Toby Gute Ergänzung. Viele (die meisten?) der aufgelisteten Programme bewahren und aktualisieren auch Metadaten, was einer der Gründe ist, warum ich eines davon empfehle, anstatt nur jpegtrandirekt.
Vielen Dank! Ich habe jpegtran unter Windows verwendet. Der Rotate 180 ist genau das, was ich brauchte. Ich habe den genauen Stapelbefehl in die Frage für die zukünftige Referenz eingefügt.
@Johns-305 Freut mich, dass ich helfen konnte. Zur Bearbeitung der Frage siehe meta.photo.stackexchange.com/questions/1601/…
@mattdm Soll ich die markierte Antwort dann bearbeiten? Wie kommuniziert man die eigentliche Lösung richtig?
@Johns-305 Wenn Sie das Kontrollkästchen "akzeptiert" aktivieren, nachdem Sie dies getan haben, wird mitgeteilt, dass die Antwort für Sie funktioniert hat - Sie müssen nichts weiter tun. Wenn Sie weitere Details hinzufügen möchten, können Sie sie hier als Kommentare hinzufügen (ebenfalls wie Sie) . Wenn es sich um eine einfache Ergänzung handelt, ist das Bearbeiten der Antwort in Ordnung. Wenn es sich um eine komplizierte Änderung handelt, können Sie dies tatsächlich als Ihre eigene Antwort posten.

Unter Windows können Sie dies ohne zusätzliche Software in ZWEI Operationen tun. Wählen Sie die Dateien, die Sie drehen möchten, im Datei-Explorer aus, klicken Sie mit der rechten Maustaste und führen Sie zweimal "Rechtsdrehung" (oder Linksdrehung) aus. Dies geschieht verlustfrei, wenn es das Bild zulässt (z. B. wenn die Abmessungen nicht „witzig“ sind).

Was sind "lustige" Maße? Warum sollten die Abmessungen eines Fotos eine verlustfreie Drehung verhindern?
Nach dem Lesen Sind „Windows Photo Viewer“-Drehungen verlustfrei? , Ich verstehe jetzt. Beide Dimensionen müssen ein Vielfaches von 8 sein, um verlustfrei gedreht zu werden.
Dies ist die beste Antwort. Ich bin der Seite beigetreten, nur um dies zu unterstützen.

Sie könnten ImageMagick mit der rotateOption verwenden :

convert image.jpg -rotate 180 result.jpg

Abhängig von Ihrer Umgebung sollten Sie diesen Befehl auf mehrere Dateien anwenden können.

Beachten Sie jedoch, dass dies das JPEG neu codiert und an Qualität verliert.

Sie können xnview unter Windows verwenden, das über einige Batch-Modus-Verarbeitungen verfügt, und für eine einfache Drehung von Bildern auch die Option haben, Bilder basierend auf den Exif-Daten zu drehen.

Wählen Sie alle Bilder aus (auch die korrekt ausgerichteten! Es wird wissen, dass sie bereits gut ausgerichtet sind), "drehen Sie basierend auf Exif" und es wird es tun (ohne das JPG neu zu berechnen, also ohne Qualitätsverlust).

Wie sie auf http://newsgroup.xnview.com/viewtopic.php?t=1420 sagen :

Wählen Sie dazu alle Ihre Bilder aus und wählen Sie "Tools > JPG Lossless Transformations" (oder Dropdown-Liste des Symbols "JPG Lossless Transformations" in der Symbolleiste). Aktivieren Sie im Dialog die Schaltfläche mit "EXIF" darauf und drücken Sie dann "Go". XnView dreht die Bilder permanent basierend auf dem EXIF-Orientierungsflag.`

Und beim nächsten Mal, wenn Sie eine GoPro haben, die aktuell genug ist, möchten Sie vielleicht auch ihre Funktion überprüfen: https://gopro.com/support/articles/what-is-auto-image-rotation

Speichert die GoPro tatsächlich die korrekten EXIF-Orientierungsdaten? Die Hero4 / Session haben einen Orientierungssensor, aber ich glaube nicht, dass dies bei den älteren Modellen der Fall ist.

Angenommen, Ihre Fotos sind im JPEG-Format, bin ich ziemlich parteiisch für JPEGCrops , ein einfaches und kostenloses Tool für die verlustfreie Stapelverarbeitung von Bildern.

Sie können auf bestimmte Seitenverhältnisse zuschneiden und/oder drehen.

FSViewer ist ein nützliches Programm, das das kann.

Öffnen Sie den Ordner, in dem sich die Bilder befinden, wählen Sie alle Bilder aus, die Sie drehen möchten, drücken Sie F4 und gehen Sie im sich öffnenden Fenster zur Registerkarte „Stapelkonvertierung“. Klicken Sie unten rechts auf „Erweiterte Optionen“, gehen Sie zur Registerkarte „Drehen“. Aktivieren Sie „Spiegeln/Drehen“, dann „Drehen“, wählen Sie dann unten „180“ und klicken Sie auf „OK“. Legen Sie fest, wo diese gespeichert werden sollen, und klicken Sie auf „Konvertieren“.

Bearbeiten: Eine schnellere und schmerzlosere Methode besteht darin, einfach alle gewünschten Bilder auszuwählen und in der Symbolleiste zweimal auf „Rechts drehen und speichern“ zu klicken. Sollte für JPEGs zerstörungsfrei sein.

Darf ich den Batch-Modus von Irfanview vorschlagen, der nur unter Windows läuft. Irfanview ist auch gut für einfache Bearbeitungen, aber es ist kein GIMP.

Wählen Sie nach der Installation „Datei | Stapelkonvertierung/-umbenennung“. Von da an wird es etwas knifflig, Sie müssen alle Dateien auswählen, einen Zielordner angeben und auf die Schaltfläche „Erweitert“ klicken, um die erweiterten Optionen anzuzeigen. Es kann sich um +/-90° drehen, aber um 180° zu machen, müssen Sie die Feindrehung ganz rechts auswählen und 180° eingeben. Beachten Sie, dass Sie sie auch in der Größe ändern, die JPEG-Qualität ändern und sie umbenennen können.

Sie können dies auch ziemlich schnell tun, indem Sie in der GUI bleiben und die Tastatur verwenden. Öffnen Sie eine beliebige Datei im Ordner mit Bildern. Drücken Sie zweimal 'R', um zweimal zu drehen. Drücken Sie dann Strg-S zum Speichern. Es werden zwei Fenster angezeigt, eines Ihr typisches Dateidialogfeld und ein zweites für die JPEG-Komprimierung (wenn das Standardformat von GoPro JPEG ist). Ich würde sicherstellen, dass der Qualitätsfaktor mindestens 90 % beträgt. Speichern Sie dann die Datei; Sie sollten in der Lage sein, die Tab-Taste oder Alt-S zum Speichern zu drücken. Möglicherweise wird ein Dialogfeld vom Typ "Sind Sie sicher" angezeigt (möglicherweise können Sie das deaktivieren). Drücken Sie dann einfach die Leertaste, um zur nächsten Datei im Ordner zu gelangen. Wenn Sie mehr als 50 Dateien haben, ist der Batch möglicherweise schneller. Zehn Dateien, ich mache einfach das Obige.

Das Wichtigste bei Irfanview ist, dass es wie Blender Sie nicht fragt, ob Sie Speichern möchten, wenn Sie ein Bild ändern.

Das führt zu einer verlustbehafteten Drehung - da es sie dreht und dann das JPEG erneut speichert, verlieren Sie an Qualität. Verwenden Sie in IrfanView besser die Funktion „JPEG Lossless Rotation“ (Umschalt+J). Beachten Sie, dass Sie die Miniaturansicht verwenden können, um alle Ihre Bilder auszuwählen und sie dann alle auf einmal zu drehen.
@RocketFeathers - Irfanview ist das einfachste Tool, um dies verlustfrei in einer Windows-Umgebung zu tun. Aber wie vclaw sagt, ist es viel besser, dafür die "JPEG Lossless Rotation" zu verwenden. Bearbeiten Sie Ihre Antwort, um dies widerzuspiegeln, und ich werde sie positiv bewerten.
"Sie werden nicht gefragt, ob Sie Speichern möchten, wenn Sie ein Bild ändern." - Dies kann in Optionen > Eigenschaften/Einstellungen... > Beim Beenden des Programms fragen, ob Änderungen gespeichert werden sollen, geändert werden.

Bei Fenstern können Sie alle markieren, wenn sie im Explorer sind, dann mit der rechten Maustaste klicken und im Uhrzeigersinn drehen wählen. Tun Sie dies zweimal und Ihre Bilder sind jetzt richtig ausgerichtet.

Kennen Sie GIMP? Es gibt ein Plugin namens BIMP , mit dem Sie die gleiche Operation mit einer Reihe von Bildern über eine grafische Oberfläche ausführen können. Sie können es einfach mit dem offiziellen Installationsprogramm für Windows installieren.

Sie können sie auch in einem anderen Format oder mit einem anderen Komprimierungsverhältnis erneut speichern, um große Qualitätsverluste zu vermeiden.

Profi-Tipp: Ich habe es geschafft :D

Ich denke, Sie wollten eher "Haftungsausschluss" als "Profi-Tipp" sagen: p Aber großartige Software! Ich habe hin und wieder Batch-Operationen auf GIMP benötigt und stattdessen Matlab-Code geschrieben. Ich werde dein Tool für das nächste Mal im Hinterkopf behalten :)

ImageMagick ist eine Reihe von Befehlszeilen-Tools, die mit Bildern arbeiten, und Sie können diese Tools mit grundlegenden Unix-Shell-Befehlen kombinieren, um denselben Befehl auf eine Reihe von Dateien anzuwenden. Es gibt viele gute Beispiele unter Wie dreht man alle Bilder in einem Verzeichnis mit imagemagick? .

Ähm ... und wenn das OP unter Windows läuft und Cygwin nicht verwendet ...? :) Vielleicht möchten Sie "und Windows-Batchdateien" hinzufügen oder die Antwort erweitern, um anzuzeigen, dass ImageMagick nicht unbedingt eine reine UNIX-Lösung ist, sondern nur eine Befehlszeilenlösung.
Werde es heute Nachmittag mal ausprobieren. Es sind Windows-Binärdateien verfügbar.

Ich persönlich benutze Adobe Lightroom. Bilder können einfach stapelweise rotiert und bearbeitet werden, wählen Sie einfach die Bilder aus, die Sie drehen möchten, klicken Sie mit der rechten Maustaste und wählen Sie die Option zum Transformieren der Bilder durch Drehen um 180 Grad.

Wenn Sie ständig mit Tausenden von Bildern arbeiten, die eine Stapelverarbeitung erfordern, insbesondere wenn dies komplexer ist als das Drehen - wie das Anpassen von Farbe oder Belichtung -, dann ist LR wahrscheinlich eine solide Investition.

Mir gefällt nicht, dass Lightroom Closed Source ist, Geld kostet und nicht auf Linux-Systemen läuft. Ich habe jedoch festgestellt, dass die Funktionen das, was kostenlos verfügbar ist, bei weitem übersteigen.

Sie könnten LiveBlox verwenden und eine Pipeline erstellen, um das Drehen des Bildes zu ermöglichen. Die Demoversion auf http://liveblox.org hat einen Rotationsblock, sodass dies möglich ist.

Es gibt ein Tutorial https://www.youtube.com/watch?v=kY0e5msQuiU , das zeigt, wie man die Batch-Bildgröße ändert, Sie müssen nur die feste Größenänderung durch den Rotator ersetzen, um die Drehung durchzuführen.

Auf diese Weise können Sie jedes Bild mit einem einzigen Klick bearbeiten.

$ für F in *jpg; do convert -rotate 180 $F "$(basename $F .jpg)_R.jpg" && echo "Fertig $F"; erledigt

Erläuterung: *for F im .jpg- Teil des Befehls weist den Dateinamen einer Variablen zu, die später aufgerufen werden kann, um die Datei in [ursprünglicher Dateiname}_R.jpg umzubenennen

Das "do convert -rotate 180" teilt dem Computer mit, dass Sie Ihre Bilder konvertieren möchten, indem sie um 180 Grad gedreht werden.

Der Teil „$(basename $F .jpg)_R.jpg“ des Befehls gibt den neuen Dateinamen an.

Das && teilt dem Computer mit, dass ein zusätzlicher Befehl kommt, der Computer den Befehl jedoch nur ausführen darf, wenn der vorherige Befehl (Rotation und Umbenennung) erfolgreich war.

echo "Done $F" teilt dem Computer mit ("echo" für Sie), dass jede Datei erfolgreich gedreht wurde. Der $F -Unterteil des Befehls ruft die anfängliche Dateinamenvariable ab, sodass die Ausgabe wahrscheinlich etwas über den Effekt von "Done file1.jpg" sagt.

Und man braucht sh/csh/bash, damit dieses Stück funktioniert.

Das funktioniert möglicherweise, aber ohne Erklärung ist es keine gute Antwort. Bitte erläutern Sie ggf. in welchem ​​Zusammenhang diese Lösung steht.
Ist dies eine Erweiterung der Antwort von null mit ImageMagick?
Dies funktioniert nicht wie erwartet, wenn sich bereits *_R.jpgDateien im Verzeichnis befinden.
Vielen Dank für die Klarstellung. Ich bin mir nicht sicher, ob die Installation einer UNIX-Shell unter Windows ein praktischer Ansatz ist, aber es ist kein geringerer Ansatz.
pts, Sie können _R.jpg beliebig ändern (wie "_rotated.jpg"). Sie haben Recht, dass dies problematisch ist, wenn Sie bereits _R.jpg-Dateien im Verzeichnis haben.