Comprimere immagini jpeg e png in batch

September 08, 2018 0 Comments CLI Utility

Le immagini occupano troppo!

Ciao a tutti!

Spesso e volentieri mi sono trovato di fronte l'ottimizzazione di una cartella media di un sito web, solitamente wordpress o ghost cms.

I miei compagni di avventure sono due comandi da shell, jpegoptim e optipng.

Combinando il comando find con questi due tool, è possibile ridurre la dimensione dei file di un intera cartella e delle sottocartelle.

Di seguito un paio di esempi utili in cui vi spiegherò i vari parametri utilizzati.

Riduzione JPEG

Per ridurre le immagini jpg e jpeg utilizzeremo jpegoptim.

Installazione

Debian e derivati:

apt-get install jpegoptim  

RPM e derivati

yum install epel-release  
dnf install epel-release    [Fedora 22+]

yum install jpegoptim  
dnf install jpegoptim    [Fedora 22+]  

MacOS

brew install jpegoptim  

Uso

Una volta posizionati nella cartella di interesse potremo lanciare il comando con:

find . -name "*.jpeg" -exec jpegoptim --strip-all --all-progressive --size=250k {} \;  

In questo comando stiamo passando 3 parametri, e chiedendo al find di trovare nella cartella corrente e nelle sottocartelle tutti i file che corrispondono a *.jpeg

  • --strip-all con questa direttiva vengono eliminati tutti i metadati dell'immagine, come quelli ad esempio che aggiunge un iphone quando si scatta una foto (posizione gps, etc)
  • --all-progressive Si modifica la compressione da baseline a progressive (qui una buona spiegazione della differenza https://www.liquidweb.com/kb/what-is-a-progressive-jpeg/ )
  • --size=250k si forza la dimensione massima a 250k

Riduzione PNG

Per questo tipo di riduzione invece, utilizzeremo optipng.

Installazione

Debian e derivati:

apt-get install optipng  

RPM e derivati

yum install epel-release  
dnf install epel-release    [Fedora 22+]

yum install optipng  
dnf install optipng    [Fedora 22+]  

MacOS

brew install optipng  

Uso

Una volta posizionati nella cartella di interesse potremo lanciare il comando con:

find . -name "*.png" -exec optipng -o7 -strip all {} \;  
  • -o7 e' il parametro che indica la quantità di passaggi che vengono fatti per ottimizzare l'immagine. Non entro troppo nel dettaglio ma si riesce ad ottenere una compressione lossless anche del 30%
  • -strip all come per l'ottimizzazione jpeg, andiamo ad eliminare i metadati

Fonti e approfondimenti:

Samuele Chiocca
Padova, italy Website