pngcrush optimiser images

Optimisation des png avec pngcrush

Comment optimiser au maximum sa bande passante en réduisant la taille de ses images png

pngcrush

Date de publication : 2010-07-20 11:56:25

L'idée de cet article m'est venue en consultant la FAQ de Yahoo Smush.It. J'ai eu envie de réduire la taille de toutes mes images png avec l'outil Yahoo mais c'était bien trop long pour moi.

En lisant la faq j'ai découvert qu'ils utilisaient pngcrush pour optimiser les images png j'ai donc décider de me faire une petite ligne de commande pour réduire la taille des png.

Installation de pngcrush

Pour installer pngcrush rien de plus simple :

root@home:~$ aptitude install pngcrush

Utilisation de pngcrush

Pour réduire la taille d'une image png avec pngcrush au maximum j'utilise la commande suivante :

root@home:~$ pngcrush -brute -rem text fichier-source.png fichier-sortie.png

Attention pngcrush ne peut pas écraser directement le fichier source car il ne charge pas le fichier source en mémoire. Il est donc obligatoire de passer par un autre fichier de sortie.
Listes des paramètres de pngcrush :

  • brute : indique à pngcrush de choisir la meilleure méthode de compression
  • rem text : indique à pngcrush de supprimer toutes les informations textes de l'image

Utilisation de pngcrush sur toutes les images png d'un dossier

En mixant la commande précédente avec find il est facile de faire une commande qui permet d'utiliser cette optimisation des images png sur toutes les images d'un dossier.

root@home:~$ find /chemin/vers/mon/dossier/ -type f -name '*.png' -exec bash -c "pngcrush -brute -rem text {} /tmp/crush.png && mv /tmp/crush.png {}" \;

Résultats de l'optimisation

En utilisant ma commande qui permet de faire la somme de la taille des fichiers voici les résultats que j'obtiens sur les fichiers statiques de ce site :

Avant passage de pngcrush :

root@home:~$ find /chemin/vers/mon/dossier/ -type f -name '*.png' | xargs stat -c %s | awk '{a+=$1;print a}' |tail -1
62518

Après passage de pngcrush :

root@home:~$ find /chemin/vers/mon/dossier/ -type f -name '*.png' | xargs stat -c %s | awk '{a+=$1;print a}' |tail -1
48953

On peut chiffrer le gain de 22% avec le calcul suivant :

(62 518 - 48 953) / 62 518 = 0.21697751

Quand on sait que ces images sont appelées à chaque page vue de mon site (lorque le navigateur ne les a pas en cache) et que pngcrush compresse sans perte de qualité sur les images je me demande pourquoi je n'ai pas fait ça plus tôt :D.

Article en relation

Image : Gabriela Camerotti

 
 

b1n@sp1n