Come ruotare una serie di immagini dalla riga di comando?


17

Ho un ampio set di immagini JPEG tutte con la stessa risoluzione. Ci vorrebbe troppo tempo per aprirli all'interno dell'interfaccia grafica di imagemagic o gimp.

Come posso ottenere che ogni immagine venga ruotata e salvata con lo stesso nome file?


3
Vedi qui . Attenzione, tuttavia, che ricodificare JPEG è generalmente con perdita di dati.
Satō Katsura,

Risposte:


22

Puoi usare il convertcomando:

 convert input.jpg -rotate -degrees out.jpg

per esempio:

convert input.jpg -rotate -180 out.jpg

Salvalo con lo stesso nome:

convert file.jpg -rotate -180 file.jpg

Ruota tutti i file:

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

modificare

È possibile utilizzare gli mogrifystrumenti da riga di comando (lo strumento migliore) consigliati da @ don-crissti

mogrify -rotate 90 *.jpg

1
grazie, come faccio a dire al comando che il nome del file sinistro di -rotate -180 deve essere uguale al suo diritto, se ci sono molti file?
Sharkant,

Ruotare un file di 180 gradi ti darà sempre lo stesso risultato, indipendentemente dal fatto che lo ruoti a sinistra o a destra.
djsmiley2k nel buio,

@ GAD3R 360 gradi si tradurrà in seguito nella stessa immagine. Ruotando un'immagine di 180 gradi a sinistra o a destra, entrambi ti danno la stessa immagine (ma capovolta).
djsmiley2k nel buio,

2
$CAPITAL_NAMESdovrebbe essere lasciato alle variabili di ambiente; per quelle variabili locali negli script di shell o nei comandi usare$normal_lowercase
cat

2
convertricodifica JPEG e quindi perde. Meglio usarejpegtran
imz - Ivan Zakharyaschev il

16

Per immagini JPEG e rotazioni ad angolo retto, utilizzare jpegtrano exiftran, poiché possono ruotare le immagini senza perdita.

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

O per ruotare sul posto:

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

exiftranha anche il -aflag per ruotare automaticamente l'immagine in base a ciò che dice il tag di orientamento EXIF.


Per la rotazione in senso antiorario (angolo sinistro) con jpegtran, usare -rotate 270e con exiftran usare la -2bandiera secondo il manuale.
Timo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.