Optimiser la taille des images PNG

Septembre 2016

On peut optimiser de manière importante la taille des fichiers PNG, ce qui est particulièrement intéressant pour les pages web. La méthode décrite ci-dessous permet de réduire les fichiers PNG en moyenne à 40% de leur taille originale.


Comment ?

  • En réduisant le nombre de couleur dans l'image.
  • En re-compressant l'image.
  • En éliminant les informations inutiles du fichier PNG (commentaires, miniatures...)

Pourquoi ?

  • Moins il y a de couleurs dans une image, mieux elle se compresse en PNG. Bien souvent, les PNG en millions de couleurs peuvent se réduire à 256 sans grande perte de qualité.
  • On peut utiliser différents taux de compression quand on enregistre en PNG. On peut donc re-compresser les PNG avec des paramètres optimaux pour obtenir un fichier plus petit sans la moindre modification visuelle.
  • Un fichier PNG peut contenir de nombreuses informations en plus de l'image elle-même: des commentaires, des profils de couleur, etc. Ces informations sont inutile pour un navigateur. Les éliminer permet d'obtenir des fichiers PNG plus petits.

Avec quoi ?


Il existe deux logiciels très efficaces, gratuits et open-source:
  • pngnq permet de réduire le nombre de couleur d'un fichier PNG. La grande majorité des PNG en millions de couleurs peuvent se réduire en 256 couleurs sans perte de qualité flagrande. On gagne ainsi de la place. pngnq est le logiciel le meilleur dans ce domaine.
  • optipng effectue une recompression des png en essayant différents paramètres de compression afin d'obtenir le fichier le plus petit possible.
  • optipng élimine également les informations inutiles d'un PNG.


L'étape pngnq est recommandée mais optionnelle, car dans certains cas spécifiques, elle peut réduire trop la qualité d'image. Mais dans la vaste majorité des cas, l'algorithme utilisé est tellement efficace que la différence entre millions de couleurs et 256 couleurs est presque imperceptible.

En fait, pngnq est tellement efficace que rares sont les cas où garder du 16 millions de couleurs se justifie.

Ligne de commande


Si vous avez un fichier image.png, tapez en ligne de commande:

pngnq -vf -s1 image.png
optipng -o7 image-nq8.png

En sortie, vous avez l'image optimisée image-nq8.png

Faites le test ! Vous serez surpris du gain de place.

Explications des options:
  • -vf demande à pngnq d'afficher ce qu'il est en train de faire, et d'écraser le fichier s'il existe déjà.
  • -s1 demande à pngnq de faire l'optimisation maximum (par défaut, c'est -s3)
  • -o7 demande à optipng de faire un maximum de tests avec des combinaisons différentes.

Traitement de fichiers par lot


Si vous avez un lot de fichiers png, vous pouvez faire:

pngnq -vf -s1 *.png
optipng -o7 *-nq8.png

Les fichiers optimisés porteront le nom xxxx-nq8.png

Gain moyen


Dans la majorité des cas, on peut espérer réduire un PNG à 40% de sa taille originale.
(Un PNG de 100 ko se réduit donc typiquement à 40 ko.)

Exemples

Logo CCM


Image d'origine: 9,2 ko



Optimisée: 4,4 ko


Pièces


Image d'origine : 21,8 ko



Optimisée: 8,4 ko


Où trouver ces logiciels ?

  • Sous Linux (Debian):
    sudo apt-get install pngnq optipng 
  • Sous Windows:

Et la transparence ? Et la compatibilité ?


pngnq et optipng préservent la transparence des fichiers PNG. Vous pouvez donc compresser tous vos PNG sans étât d'âme.

De plus ces deux logiciels font très attention à générer du format PNG parfaitement valide: Les fichiers PNG ainsi produits sont parfaitement standards et pourront être lus sans problème dans tous les logiciels supportant le format PNG.

Note de sebsauvage


A l'heure actuelle, pngnq+optipng semble donner les meilleurs résultats qu'il soit possible d'obtenir.

Je n'ai pas trouvé un seul autre logiciel qui donne des fichiers aussi compacts. Si vous trouvez des logiciels plus efficaces, n'hésitez pas à m'en faire part !

Note: Dans certains cas, pngout (freeware pour Windows) peut donner de meilleurs résultats qu'optipng. C'est du 50/50: Parfois optipng est meilleur, parfois pngout est meilleur. Cela dépend des images. Si vous avez le temp, vous pouvez faire l'essai avec les deux pour obtenir le plus petit png possible.

La version ligne de commande de pngout est gratuite. La version avec interface graphique (PNGOUTWin) est payante.

Scripts


Les scripts suivants optimisent automatiquement tous les fichiers png du répertoire courant (sans que vous ayez à renommer les xxx-nq8.png en xxx.png à la fin.).
Il n'est pas recommandé de passer plusieurs fois ce script sur un même png, car pngnq dégrade à chaque fois la qualité d'image.

.bat (Windows)


pngnq -vf -s1 *.png  
@FOR %%G IN (*.png) DO ( @IF EXIST "%%~nG-nq8.png" (move /Y "%%~nG-nq8.png" "%%G") )  
optipng -o7 *.png

bash (Linux)


#!/bin/bash  
pngnq -vf -s1 *.png  
rename -f 's/-nq8.png$/.png/' *.png  
optipng -o7 *.png

A voir également :

Ce document intitulé «  Optimiser la taille des images PNG  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.