Un flux PNG sensé : oxipng, zopfli et palettes
PNG est loin d'être obsolète — bien utilisé, c'est le meilleur format pour les graphiques plats. Voici comment obtenir les fichiers les plus petits sans banding ni artefacts de dithering.
PNG est loin d'être obsolète — bien utilisé, c'est le meilleur format pour les graphiques plats. Voici comment obtenir les fichiers les plus petits sans banding ni artefacts de dithering.
PNG a mauvaise réputation pour être « lourd », mais la plupart des PNG boursouflés sont simplement mal encodés. Avec un flux de travail clair en trois étapes — quantifier, optimiser, recompresser — vous pouvez couramment réduire un PNG de moitié ou plus, sans perte, tout en gardant des bords nets et des couleurs propres. Voici l'ordre qui compte.
PNG est conçu pour les graphiques plats aux bords nets : logos, icônes, exports d'interface, diagrammes, captures d'écran et tout ce qui contient de la transparence. Il est sans perte, donc les bords restent parfaitement nets — aucun bruit de moustique façon JPEG autour du texte. Pour les photographies, c'est le mauvais choix (utilisez WebP/AVIF/JPEG), mais pour les graphiques synthétiques qui remplissent les applications modernes, rien ne bat un PNG bien fait.
La plupart des graphiques d'interface utilisent bien moins de 16 millions de couleurs. Convertir un PNG truecolor 24 bits en palette indexée 8 bits (≤256 couleurs) est le plus gros levier à lui seul — cela réduit souvent le fichier de moitié avant toute autre optimisation. Le piège est de bien choisir les couleurs et de traiter les dégradés avec soin ; un bon quantificateur choisit une palette optimale et n'applique du dithering que là où cela aide vraiment.
PNG applique un filtre par ligne avant la compression, et ce choix affecte considérablement la taille. oxipng teste des stratégies de filtres et recompresse l'image, rapidement et en parallèle, sans aucune perte de qualité. C'est le choix par défaut sûr et quotidien : pointez-le vers un dossier et il rend simplement chaque PNG plus petit. Exécutez-le aussi bien sur les images truecolor que sur celles en palette.
Quand vous voulez l'absolu minimum et que l'attente ne vous dérange pas, zopfli est un compresseur compatible DEFLATE qui cherche bien plus intensément un flux plus petit. Il est lent — parfois plusieurs secondes par image — mais il produit des PNG standard que tout décodeur peut lire, souvent quelques pourcents plus petits qu'avec oxipng seul. Parfait pour les ressources que vous publiez une fois et servez des millions de fois.
# Le pipeline complet, sans perte de bout en bout imageforge ui.png --palette auto --lossless # étape 1 imageforge ./icons/*.png --optimize oxipng # étape 2 imageforge logo.png --optimize zopfli --effort max # étape 3
Les deux modes d'échec des PNG en palette sont le banding (marches visibles dans un dégradé quand il n'y a pas assez de couleurs) et le bruit de dithering (grain provenant de la dispersion des couleurs pour en simuler davantage). La solution, c'est le jugement : gardez les dégradés en truecolor, quantifiez les zones plates, et n'appliquez du dithering qu'avec de petites palettes où l'œil préfère le bruit aux bandes. En cas de doute, comparez la version quantifiée à l'original avant de la publier.
Palette, oxipng et zopfli en une seule passe — sans perte par défaut, sur votre Mac.