Ridimensionare e ritagliare immagini velocemente

Ridimensionare e ritagliare immagini velocemente

ImageMagick è un software che uso molto spesso per manipolare le immagini da riga di comando in ambiente GNU/Linux. Le possibilità offerte da questo pacchetto sono proprio tante e mogrify è il tool che preferisco perché permette di elaborare grandi quantità di immagini in maniera proprio semplice.

Qualche giorno fa, ad esempio, ho dovuto ridimensionare e ritagliare qualche migliaio di foto. Uno dei problemi principali di questo tipo di attività è che non sempre la diagonale delle foto è costante. Ci sono foto orizzontali e foto verticali, quindi in alcuni casi è necessario scalare prima la larghezza e poi effettuare il ritaglio (crop), in altri casi invece si deve modificare l'altezza per poi procedere al taglio.

Fortunatamente anche per questa operazione ImageMagick ha a disposizione alcuni parametri che fanno al caso nostro.

Per gli impazienti ecco un esempio con il comando completo per ridimensionare e ritagliare correttamente una o più immagini in formato JPG per portarle tutte alla dimensione di esattamente 170x140 pixel:

mogrify -resize "170x140^" -gravity center -crop 170x140+0+0 +repage *.jpg

Ricordo che ImageMagick si compone principalmente di due utility:

  • convert per manipolare un formato alla volta;
  • mogrify per elaborare più immagini contemporaneamente.

In questo caso ho scelto mogrify in quanto dovevo lavorare su molti file assieme.

Il primo parametro che troviamo è resize che serve per effettuare il ridimensionamento. È importante evidenziare che come valore vengono assegnate le dimensioni (larghezza per altezza) ed un flag per ridimensionare l'immagine in base alla dimensione più piccola per riempire l'area indicata.

Abbiamo poi il parametro gravity attraverso il quale si specifica dove centrare l'immagine per effettuare il ritaglio definito con il parametro crop. In questo caso l'immagine sarà centrata al centro (center).

Il parametro crop accetta come valori le dimensioni finali e lo scostamento (offset) da cui ritagliare a partire dall'angolo in alto a sinistra dell'immagine. Inoltre è consigliabile il parametro +repage che rimuove eventuali aree al di fuori della zona ritagliata.

Infine l'esempio che ho riportato elabora tutti i file con estensione jpg che sono presenti nella directory in cui è stato eseguito il comando per cui consiglio di effettuare sempre un backup dei file.

N.B: ImageMagick è disponibile anche per altre piattaforme come iOS e Windows.