Come ridimensionare in batch tutte le immagini in una cartella (comprese le sottocartelle)?


11

Ho un'enorme galleria da 12 GB sul server, piena di immagini in varie sottocartelle. Quei file sono troppo grandi e non utilizzati alla massima risoluzione. Devo ridimensionare tutte le immagini fino a una larghezza di 820 px (mantenendo le proporzioni). Quindi la mia domanda è: come posso creare una sorta di script di scansione che ridimensionerebbe tutte le immagini più grandi di 820px e le salverebbe sovrascrivendo il file originale?

Spero che tu mi possa aiutare :-) Grazie in anticipo.


3
find . -name "*.jpg" -exec mogrify -resize 820x {} +li farà tutti; se non vuoi elaborare quelli "meno di 820px", ci sono alcune opzioni qui .
don_crissti,

Risposte:


13

Gli strumenti ImageMagick convertiti o mogrify faranno il lavoro.

Puoi ottenerli tramite il tuo gestore di pacchetti o il sorgente / rpms qui: http://www.imagemagick.org/script/binary-releases.php#unix

Utilizzo di base:

$ mogrify -resize 820x *.jpg

Se hai bisogno di ricorsione:

find . -name '*.jpg' -execdir mogrify -resize 820x {} \;

Non credo che "820px di larghezza (mantenendo le proporzioni)" significhi "ridimensionare a 820x820". È piuttosto simile a "820px di larghezza e qualunque sia la proporzione è alta";) Inoltre, questo non gestisce la ricorsività.
Erathiel,

1
Buon punto. Modificato!

Se vuoi farlo in modo che si ridimensioni solo se sono più grandi delle dimensioni impostate e mantengono ancora i rapporti, puoi cambiarlo in questo modo: find . -name '*.jpg' -execdir mogrify -resize '820x620>' {} \;
OpensaurusRex

2
Attenzione: questo sovrascriverà le tue immagini esistenti.
sudo,


5

Usa convertper fare il lavoro.

convert -resize "1024x768>" origIMG destIMGridimensionerà origIMG su 1024x768 mantenendo le proporzioni e ridimensionando solo se l'immagine è maggiore di 1024, memorizzando la nuova immagine in destIMG. Dopodiché puoi spostare il destIMG sull'originale.

Usa un loop per viaggiare attraverso tutte le tue directory o utilizzare find.


Come modifichereste questo comando per sovrascrivere l'immagine originale con quella ridimensionata, mentre si ricorre con find?
Simon East
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.