ottimizzazione delle immagini

riducendo le dimensioni delle immagini aumenta la velocita ed alleggerisce il carico del server web

La velocità di apertura delle pagine web dipende principalmente dalle dimensioni dei contenti, ad esempio se una pagina include un’immagine grande 1Mb, e vediamo la pagina da una adsl casalinga, riusciremo a scaricare a 500k al secondo, impiegando nel migliore dei casi 2 secondi, solo per questa immagine.
Va persino  peggio utilizzando una connessione lenta, come ad esempio quella del cellulare.
Non minimizzando le immagini sprechiamo anche la banda del server, e le sua risorse (cpu,disco,rete).

Ciò è male anche per il nostro server, perché se le immagini occupano il doppio, il server riuscirà nello stesso tempo a servirne la metà!

Per la compressione di immagini consiglio di utilizzare il formato jpg, perché è un formato di compressione lossy, ovvero in grado di scartare le informazioni inutili, permettendo di comprimere a piacimento, l’altra faccia della medaglia è che elimineremo delle informazioni diminuendo la qualità complessiva delle immagini, serve trovare un equilibrio ad esempio per il web va bene usare compressione dell’80% .

Riducendo altezza e larghezza si ha un significativo risparmio, ad esempio un’immagine da 1024*768 usa complessivamente 786432 pixel, mentre un’immagine alta e larga la metà, ne usa 512*384=196608 che sono 1/4.  Perché abbiamo utilizzato 1/2 larghezza per un 1/2 dell’altezza.
Per cui se impigassimo un’immagine larga 1/10, e alta 1/10, occuperebbe 1/100.
Attenzione ad utilizzare immagini rimpicciolite troppo, si ha l’effetto francobollo.

 

L’Interlaced progressive JPG, codifica le immagini in modo furbo, invece di caricare una linea dopo l’altra, carica prima una versione approssimata dell’immagine, e ad ogni caricamento aggiunge dettagli, di modo che non si debba attendere il completamento del download per poterla visualizzare.

 

in Gnu/Linux c’è un tool che si chiama convert (come suggerisce il nome) che serve a comprimere le immagini.
Per convertire il file input.jpg in output.jpg

convert -strip -interlace Plane -quality 80 input.jpg output.jpg

se avessimo tanti fle nella cartella corrente e quelli ottimizzati li volessimo mettere in dest/ basta scrivere

for i in *.jpg; do convert -strip -interlace Plane -quality 80 $i dest/$i; done