Réduire le poids des images

Avec un petit script python qui va bien

Même si on n'y fait plus très attention maintenant que l'on surfe avec la fibre et la 4G, la taille des pages web a son importance. En mode dégradé (Edge, 3G Free, etc.), c'est toujours agréable d'avoir une page qui se charge rapidement.

TinyPNG, réduire ses images en ligne

Une partie de la taille d'une page web est dûe aux différentes images présentes sur cette page. Différentes méthodes existent pour les alléger :

  • Réduire leur taille
  • Augmenter le niveau de compression
  • Choisir le bon format (le BMP sera extrêmement lourd, alors que le PNG est parfait pour les dessins schématiques)

Mais on peut encore aller plus loin. La fine équipe TinyPNG a créé un script qui permet de compresser une image sans perte de qualité. En détail, un algorithme de quantisation des couleurs est utilisé pour gagner de la place.

Certaines images peuvent perdre plus de 70% de leur poids une fois passées à la moulinette TinyPNG, sans qu'une différence ne soit visible.

Tinify In Folder, le script python pour traiter en batch

J'ai donc voulu appliquer ce script à toutes les images de ce site. Problème, les images sont dans pas mal de dossiers différents, et l'interface web n'est pas la plus pratique pour compresser beaucoup de fichiers. Que cela ne tienne, TinyPNG propose un package Python qui permet d'interfacer avec leur service.

J'ai donc écrit un petit script, Tinify In Folder, qui permet de compresser toutes les images trouvées dans un dossier. Le script est adapté à mon usage, donc une limite de 500 compressions par mois est hardcodée. Et j'ai ajouté une petite option qui permet de ne compresser que les images qui ont été créées ou modifiées dans les n derniers jours, afin de ne pas dépasser ce quota trop rapidement.

Une fois le script appliqué à l'ensemble de ce site web, la taille totale des images est passée d'environ 1.6Mo à 800ko, donc une baisse de 50% environ, ce qui n'est pas négligeable !