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