Wie dreht man eine Reihe von Bildern von der Kommandozeile aus?

17

Ich habe eine große Anzahl von JPEG-Bildern mit der gleichen Auflösung. Es würde zu lange dauern, jeden einzelnen in der grafischen Oberfläche von imagemagic oder gimp zu öffnen.

Wie kann ich erreichen, dass jedes Bild gedreht und unter demselben Dateinamen gespeichert wird?

Hai
quelle
3
Sehen Sie hier . Beachten Sie jedoch, dass die Neucodierung von JPEG im Allgemeinen verlustbehaftet ist.
Satō Katsura,

Antworten:

22

Sie können den convertBefehl verwenden:

 convert input.jpg -rotate -degrees out.jpg

z.B:

convert input.jpg -rotate -180 out.jpg

Speichern Sie es mit demselben Namen:

convert file.jpg -rotate -180 file.jpg

Alle Dateien drehen:

for photo in *.jpg ; do convert $photo -rotate 90 $photo ; done

Bearbeiten

Sie können die mogrifyvon @ don-crissti empfohlenen Befehlszeilentools (das beste Tool) verwenden

mogrify -rotate 90 *.jpg
GAD3R
quelle
1
thx, wie kann ich dem befehl mitteilen, dass der dateiname links von -rotate -180 der gleiche sein muss wie rechts davon, wenn es viele dateien gibt?
Hai
Wenn Sie eine Datei um 180 Grad drehen, erhalten Sie immer das gleiche Ergebnis, unabhängig davon, ob Sie sie nach links oder rechts drehen.
djsmiley2k in der Dunkelheit
@ GAD3R 360 Grad ergibt danach dasselbe Bild. Wenn Sie ein Bild um 180 Grad nach links oder rechts drehen, erhalten Sie dasselbe Bild (jedoch verkehrt herum).
djsmiley2k in der Dunkelheit
2
$CAPITAL_NAMESsollte Umgebungsvariablen überlassen werden; für diese lokalen Variablen in Shell-Skripten oder Befehlen verwenden$normal_lowercase
cat
2
convertkodiert JPEG neu und ist daher verlustbehaftet. Besser verwendenjpegtran
imz - Ivan Zakharyaschev
16

Verwenden Sie für JPEG-Bilder und Rotationen im rechten Winkel jpegtranoder exiftran, da diese die Bilder verlustfrei drehen können.

for f in *.jpg ; do 
    jpegtran -rotate 180 "$f" > "${f%.jpg}-rotated.jpg"
done

Oder um an Ort und Stelle zu drehen:

for f in *.jpg ; do
    jpegtran -rotate 180 -outfile "$f" "$f"
done

exiftranMit der -aFlagge kann das Bild auch automatisch gedreht werden, je nachdem, was das EXIF-Ausrichtungs-Tag sagt.

ilkkachu
quelle
jpegtranVerwenden Sie -rotate 270für Linkslauf (Linkslauf ) mit , und mit Exiftran das -2Flag gemäß Handbuch.
Timo