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?
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?
Risposte:
Puoi usare il convert
comando:
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 mogrify
strumenti da riga di comando (lo strumento migliore) consigliati da @ don-crissti
mogrify -rotate 90 *.jpg
$CAPITAL_NAMES
dovrebbe essere lasciato alle variabili di ambiente; per quelle variabili locali negli script di shell o nei comandi usare$normal_lowercase
convert
ricodifica JPEG e quindi perde. Meglio usarejpegtran
Per immagini JPEG e rotazioni ad angolo retto, utilizzare jpegtran
o 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
exiftran
ha anche il -a
flag per ruotare automaticamente l'immagine in base a ciò che dice il tag di orientamento EXIF.
jpegtran
, usare -rotate 270
e con exiftran usare la -2
bandiera secondo il manuale.