Lors de l’amélioration de la vitesse de chargement de vos pages afin d’améliorer l’UX pour réduire le taux de rebonds et satisfaire plus aux directives de Google, vous serez vite confronté au fait d’avoir des images trop lourdes qu’il est difficile de réduire sans en réduire la qualité. Pour arriver à cela aussi appelé lossless, des librairies sont extrêmement utiles, efficaces et rapide à mettre en œuvre.
Les librairies optipng et jpegoptim permettent d’atteindre les taux de compression définis par Google Page Speed et donc de valider cette partie de leur test.
Jpegoptim
Jpegoptim comme son nom l’indique permet d’optimiser des fichier jpeg selon un taux de compression définie ou sans perte. Un des grands avantages de cette librairie est qu’elle est extrêmement rapide.
Installation de JpegOptiom sur Ubuntu
sudo apt-get update apt-get install jpegoptim
Exécution de jpegoptim
Je vous montre ci-dessous comment exécuter jpegotim de différentes façon afin d’avoir un aperçu global. Il est parfois utile de compresser par lot et parfois par fichier.
Paramètre | Utilisation |
---|---|
–strip-all | Enlève tous les marquer de l’image (nom du programme utilisé,…), à utiliser pour satisfaire Google |
-m | Choix de la qualité à avoir entre 0 et 100. Si vous mettez ce paramètre, la compression ne sera plus sans perte ou lossless. |
-p | Préserve les différentes informations de date |
-P | Préserve les permissions de l’image originale. |
jpegotim change le proriétaire du fichier
Les version précédentes à la version 1.4.2 ne permettent pas de garder les permissions (owner/group) ce qui a pour effet que, si vous exécuter le script depuis une cron, le propriétaire peut changer et rendre l’image inaccessible pour l’utilisateur.
Pour voir votre version exécuter simplement: #jpegotim –version
Exécuter en ligne de commande
La ligne ci-dessous compresse toutes les images de type JPG qui se trouvent dans mon dossier /img/
find /home/web-presence/public_html/img/ -type f -name '*.jpg' -exec jpegoptim -m80 -P --strip-all {} \;
Exécuter depuis une cron php
Pour compresser toutes les images de type JPG modifiée il y a moins de 60 minutes qui se trouvent dans le dossier img/cache, exécuter un fichier php contenant les commandes suivantes :
find /home/web-presence/public_html/img/cache/ -type f -name '*.jpg' -cmin -60 -exec jpegoptim -m75 -P --strip-all {}
Compresser les jpeg depuis php
Pour compresser une image de type JPG depuis un script php exécuter la commande ci-dessous:
exec("exec jpegoptim -m80 -P --strip-all /chemin_de_l_image/nom_du_fichier.jpg");
Optipng
Vous l’aurez bien sur compris, optipng est lui conçu pour compresser des images png. Plus lent que pour les jpegs, il est néanmoins très utile et selon les réglages pas trop lent.
Installation de Optipng sur Ubuntu
sudo apt-get update
apt-get install optipng
Paramètres principaux
Paramètre | Utilisation |
---|---|
-strip all | Enleve toutes les meta données de l’image. Elles sont inutiles et prennent de la place. |
-o |
Choix du niveau d’optimisation entre 0 et 7. La valeur par défaut est 2. Plus le niveau de compression est élevé, plus la vitesse d’exécution sera lente. |
-preserve | Tente de préserver les attributs du fichier |
Exécuter Optipng
Les principes sont les mêmes que pour Jpegoptim. Je donne ici 2 exemple, le premier avec une recherche de fichier et le second en lui transmettant le nom du fichier. Je vous incite à regarder plus haut pour plus d’exemples.
optipng -o4 -strip all mon_image.png
find /home/web-presence/public_html/img/ -type f -name '*.png' -exec optipng -o4 {} \;