Se le immagini presenti sul computer occupano troppo spazio, è possibile ridurne le dimensioni senza perdere la qualità. Questo può essere molto utile anche quando si caricano immagini su cloud storage.
JPEG e PNG sono i formati di immagine più comuni su Internet, quindi potrete ottimizzare quasi tutte le immagini.
Esiste un'utility chiamata jpegoptim, uno strumento a riga di comando che può essere utilizzato per comprimere le immagini JPEG, JPG e JFIF senza perdita di qualità. L'utility ottimizza le immagini sulla base delle tabelle Huffman. L'algoritmo JPEG utilizza la compressione così com'è, ma questa viene ottenuta con una perdita di qualità; in questo caso è possibile ottimizzare le dimensioni senza modificare l'immagine.
Per installare l'utility in Ubuntu, Debian e distribuzioni basate, eseguire:
$ sudo apt install jpegoptim
In Fedora, Red Hat, CentOS e altre distribuzioni basate su di esse le cose sono un po' più complicate, dovrete prima aggiungere il repository epel-release. È possibile farlo con un comando come questo:
$ sudo yum install epel-release
Oppure:
$ sudo dnf install epel-release
Poi si può installare jpegoptim dal repository appena aggiunto:
$ sudo yum install jpegoptim
Oppure:
$ sudo dnf install jpegoptim
Vediamo come usare jpegoptim. L'uso dell'utilità di compressione delle immagini di Linux è molto semplice. Tutto quello che dovete fare è eseguire il programma e passargli un nome di file. Questa è la sintassi:
$ jpegoptim optiona file_name.jpeg
Vediamo le opzioni dell'utilità:
-d
- specifica la cartella in cui salvare le immagini finite;-f
- ottimizzazione forzata;-m
- indicatore di qualità, annulla la compressione senza perdita e imposta il livello di qualità da 0 a 100, più è alto meglio è;-n
- non esegue l'ottimizzazione vera e propria, ma mostra solo il risultato;-S
- imposta la dimensione dell'immagine finita, che può essere specificata in percentuale o in kilobyte;-o
- sostituisce il file sorgente;-p
- salva i timestamp;-P
- salva i diritti del file.Vediamo come ottimizzare le immagini in Linux con jpegoptim. Per prima cosa, esaminiamo le dimensioni originali:
$ du image.jpg
Poi eseguiamo l'ottimizzazione più semplice:
$ jpegoptim image.jpg
Poi guardiamo di nuovo le dimensioni:
$ du image.jpg
Come si può vedere, la compressione jpg ha funzionato e aprendo l'immagine in un qualsiasi programma di grafica non ci sarà alcuna differenza o degrado della qualità, l'immagine originale e quella finita saranno identiche. A sinistra l'immagine ottimizzata, a destra l'originale:
Se si vuole, si può comprimere l'immagine fino a una certa dimensione, ma in questo caso non sarà senza perdite:
$ jpegoptim --size=250k image.jpeg
L'immagine sarà compressa, ma la qualità si deteriorerà notevolmente. Se ci sono molte immagini, si può usare molto facilmente la compressione batch, basta andare alla cartella con le immagini e poi eseguire il comando di compressione specificando una maschera invece di un file, per esempio:
$ cd images/
jpegoptim *.jpg
È anche possibile elencare più di un'immagine alla volta:
$ jpegoptim image1.jpg image2.jpg
Per ottimizzare tutte le immagini in una determinata cartella è possibile utilizzare il comando xargs insieme a find. Ad esempio, comprimere tutte le immagini nella cartella corrente con move nella cartella ~/compressed:
$ find . -name "*.jpg" | xargs jpegoptim -d ~/compressed -p
Ecco fatto, ora sapete come comprimere le immagini jpg in Linux. Ora parleremo di come comprimere le immagini png. Anche questo è molto semplice.
PNG o Portable Network Graphics è un formato di immagine bitmap progettato per sostituire l'imperfetto formato GIF in termini di compressione e riproduzione dei colori. Le dimensioni delle immagini PNG possono variare notevolmente in base a diversi fattori, quali la profondità di colore, l'interlacciamento, il filtro di compressione precedente, l'algoritmo di compressione utilizzato, ecc.
OptiPNG è un'utility per console che consente di ottimizzare le immagini PNG. In particolare, comprime le dimensioni, recupera i metadati, controlla l'integrità, ecc. Con OptiPNG è possibile comprimere i file senza perdita di qualità, proprio come abbiamo fatto con il formato Jpeg.
Se utilizzate Ubuntu, il programma è presente nei repository ufficiali e potete installarlo molto facilmente. Per installare optipng in Debian, Ubuntu e derivati digitate:
$ sudo apt install optipng
In Red Hat, CentOS o Fedora si fa esattamente allo stesso modo, solo con un gestore di pacchetti diverso:
$ sudo yum install optipng
Oppure:
$ sudo dnf install optipng
La sintassi dell'utilità è molto semplice. Si può usare esattamente come jpegoptim:
$ optipng ioptions file_name.png
Vediamo le opzioni dell'utilità:
-backup
- salva le copie dei file modificati;-dir
- cartella in cui scrivere i file;-force
- forza la scrittura del file in uscita;-out
- scrive il file in uscita
nel file specificato;-simula
- non esegue alcuna azione, ma mostra solo il risultato;-o
- imposta il livello di compressione da 0 a 7.Ora proviamo a ottimizzare png in Linux. Per prima cosa vediamo la dimensione del file:
$ df -h image.png
Per eseguire la compressione delle immagini utilizzate il seguente comando:
$ optipng image.png
In questo esempio le differenze non sono visibili perché l'immagine è molto piccola, ma con dimensioni maggiori saranno significative:
Anche in questo caso la compressione png linux delle immagini è priva di perdite, il che significa che si otterrà esattamente la stessa immagine, solo più piccola. È inoltre possibile specificare il livello di compressione, che non influisce sulla qualità dell'immagine, ma influisce direttamente sul tempo di esecuzione del programma. Il valore può andare da 0 a 7 e più è alto, più forte è la compressione e più lunga sarà l'elaborazione:
$ optipng -o 7 impge.png
Per l'elaborazione in batch delle immagini si può utilizzare lo stesso principio del lavoro con jpeg:
$ cd images/
$ optipng *.png
Ora sapete come viene eseguita l'ottimizzazione delle immagini in Linux.