Comment réduire la taille d'un PNG : 5 méthodes
- Réduisez les dimensions. La taille du fichier suit le nombre de pixels : diviser la largeur et la hauteur par deux laisse environ un quart des données.
- Passez à une palette 8 bits. Des outils comme pngquant réduisent souvent la taille de 60 à 80 %, avec peu de changement visible sur les graphismes.
- Supprimez les métadonnées. Les blocs de texte, profils ICC et données d'éditeur peuvent représenter des centaines de kilo-octets.
- Utilisez la compression maximale. Le niveau 9 avec filtrage adaptatif fait gagner quelques pour cent de plus, sans perte de qualité.
- Convertissez les photos en JPG. Si le PNG est une photographie et que vous n'avez pas besoin de transparence, le JPG est généralement 5 à 10 fois plus léger.
La compression PNG est fondamentalement sans perte
C'est la chose la plus importante à comprendre sur le PNG : le niveau de compression n'a aucun effet sur la qualité. Un PNG enregistré au niveau de compression 1 et un PNG enregistré au niveau 9 donnent exactement la même image à l'ouverture. Chaque pixel est identique, bit pour bit.
Le PNG utilise l'algorithme DEFLATE (le même que celui des fichiers gzip et ZIP) pour compresser les données des pixels. En réglant le « niveau » de compression, vous déterminez l'effort que l'encodeur consacre à la recherche de motifs répétitifs et des meilleures stratégies d'encodage. Un niveau plus élevé signifie :
- Des fichiers plus petits — l'encodeur trouve des façons plus efficaces de représenter les mêmes données
- Un encodage plus lent — il faut davantage de calculs pour trouver ces gains
- Une décompression identique — quel que soit le niveau, les pixels décodés sont les mêmes
C'est fondamentalement différent du JPEG, où le réglage de qualité détermine directement la quantité de données visuelles supprimées définitivement. Avec le PNG, rien n'est jamais supprimé. La question de la « qualité » se résume à ceci : combien de temps processeur êtes-vous prêt à consacrer pour gagner quelques octets de plus ?
Notion clé : niveau de compression PNG = effort d'encodage, pas qualité. Le niveau 9 ne signifie pas « qualité inférieure » — il signifie « chercher plus longtemps une représentation plus compacte des mêmes données ».
PNG-8 vs PNG-24 vs PNG-32
Le moyen le plus efficace de réduire la taille d'un PNG est de choisir le bon sous-type PNG pour votre image. L'écart entre ces types peut représenter une réduction de taille de 3 à 5 fois, avec un changement visible minime, voire nul.
| Type | Profondeur de couleur | Couleurs | Transparence | Taille typique |
|---|---|---|---|---|
| PNG-8 | 8 bits (palette indexée) | Jusqu'à 256 | 1 bit (oui/non) ou alpha 8 bits | La plus petite |
| PNG-24 | 24 bits (RVB) | 16,7 millions | Aucune | Moyenne |
| PNG-32 | 32 bits (RVBA) | 16,7 millions | Alpha 8 bits complet | La plus grande |
PNG-8 : l'arme secrète des petits fichiers
Le PNG-8 enregistre chaque pixel sous forme d'index dans une palette de 256 couleurs au maximum. Au lieu d'utiliser 3 octets par pixel (RVB) ou 4 octets (RVBA), il n'en utilise qu'un seul. Cette différence fondamentale rend les fichiers PNG-8 3 à 5 fois plus petits que leurs équivalents PNG-24.
Le PNG-8 est idéal pour :
- Les logos — la plupart des logos utilisent moins de 20 couleurs
- Les icônes et éléments d'interface — les icônes en flat design comptent généralement 5 à 15 couleurs
- Les illustrations simples — schémas, graphiques, infographies avec des aplats de couleur
- Les captures d'écran d'interfaces riches en texte — sorties de terminal, éditeurs de code, documents texte
Le PNG-8 ne convient pas pour :
- Les photographies — les photos contiennent des milliers de couleurs ; les réduire à 256 provoque un effet de bandes visible
- Les dégradés doux — 256 couleurs ne suffisent pas à représenter un dégradé fluide sans paliers visibles
- Les images nécessitant une semi-transparence — le PNG-8 peut stocker une valeur alpha pour chaque couleur de la palette, mais les bords adoucis et les ombres demandent souvent plus de combinaisons couleur/alpha que les 256 entrées disponibles
PNG-24 ou PNG-32 : avez-vous besoin du canal alpha ?
La différence entre PNG-24 et PNG-32 tient au canal alpha (transparence). Chaque pixel d'un PNG-32 comporte un octet supplémentaire pour la transparence, ce qui rend les fichiers 25 à 33 % plus lourds qu'en PNG-24. Si votre image n'a pas besoin de transparence (aucune zone transparente ou semi-transparente), enregistrez-la en PNG-24 pour éviter le surcoût d'un canal alpha inutilisé.
Gain rapide : si votre image PNG-24 n'utilise que 50 couleurs distinctes (fréquent pour les maquettes d'interface et les schémas), la convertir en PNG-8 peut réduire sa taille de 70 à 80 % sans aucun changement visible. Des outils comme pngquant le détectent automatiquement.
Suppression des métadonnées
Les fichiers PNG peuvent contenir des métadonnées dans des blocs de texte : tEXt, iTXt, zTXt et d'autres blocs auxiliaires. On y trouve notamment :
- Les balises logicielles — le programme qui a créé le fichier (Photoshop, GIMP, etc.)
- L'horodatage de création — la date de création ou de dernière modification de l'image
- L'auteur et le copyright — des champs de texte intégrés
- Le profil colorimétrique ICC — de 500 octets à plus de 800 Ko pour les profils à gamut étendu
- Les données privées de Photoshop — les logiciels Adobe intègrent des données de calques, des références d'objets dynamiques et un historique de modifications qui peuvent peser lourd
Pour une diffusion sur le web, toutes ces métadonnées sont un poids inutile. Les supprimer donne un fichier plus petit sans aucun changement visuel :
# Supprimer toutes les métadonnées avec ImageMagick
magick input.png -strip output.png
# Supprimer avec pngcrush (ne conserve que les blocs critiques)
pngcrush -rem allb input.png output.png
# Supprimer avec optipng (optimise aussi la compression)
optipng -strip all input.png -out output.png
Le gain obtenu en supprimant les métadonnées est généralement de 1 à 5 Ko pour les images simples, mais peut atteindre 50 à 800 Ko pour les fichiers exportés depuis Photoshop avec des profils ICC intégrés et des blocs de données privées.
Réglages du niveau de compression
Le niveau de compression PNG détermine l'intensité avec laquelle l'algorithme DEFLATE recherche des motifs. Voici ce que chaque niveau signifie en pratique :
| Niveau | Vitesse d'encodage | Taille du fichier | Usage |
|---|---|---|---|
| 0 | Instantanée | La plus grande (aucune compression) | Débogage, traitement intermédiaire |
| 1–3 | Très rapide | Grande | Traitement en temps réel, fichiers temporaires |
| 4–6 | Modérée | Moyenne | Usage général (la plupart des outils utilisent 6 par défaut) |
| 7–8 | Lente | Petite | Diffusion web, archivage |
| 9 | La plus lente | La plus petite | Livraison finale, ressources web |
L'écart de taille entre le niveau 6 (par défaut) et le niveau 9 (maximum) est généralement de 2 à 5 %. La différence de temps d'encodage est plus marquée — le niveau 9 peut prendre 5 à 10 fois plus de temps que le niveau 6 pour les grandes images. Pour des ressources web encodées une fois et servies des millions de fois, le niveau 9 vaut toujours ce temps d'encodage supplémentaire.
Le paramètre de qualité PNG d'ImageMagick
Pour le PNG, ImageMagick regroupe le niveau de compression et le type de filtre dans un seul paramètre -quality. Le chiffre des dizaines correspond au niveau de compression zlib (0 à 9), celui des unités au type de filtre (0 à 5) :
# Compression maximale, filtrage adaptatif
magick input.png -strip -quality 95 PNG:output.png
# Détail : 9 = niveau de compression 9, 5 = filtre adaptatif
# Le filtre adaptatif teste les 5 types de filtre sur chaque ligne pour un résultat optimal
# Compression rapide, sans filtrage
magick input.png -strip -quality 10 PNG:output.png
# Détail : 1 = niveau de compression 1, 0 = aucun filtre
Meilleur réglage par défaut : utilisez -quality 95 pour la sortie PNG d'ImageMagick. Le 9 indique un effort de compression maximal et le 5 un filtrage adaptatif (tous les types de filtre sont testés sur chaque ligne). Vous obtenez ainsi le fichier le plus petit, au prix d'un encodage plus lent.
Les types de filtres PNG expliqués
Avant la compression DEFLATE, le PNG applique ligne par ligne un filtre de prédiction qui transforme les données des pixels pour les rendre plus compressibles. Le filtre ne modifie pas l'image — il est entièrement réversible. L'objectif est de rendre les données plus répétitives afin que DEFLATE les compresse mieux.
| Filtre | ID | Méthode de prédiction | Idéal pour |
|---|---|---|---|
| None (aucun) | 0 | Aucune prédiction (octets bruts) | Images à palette (PNG-8), bruit aléatoire |
| Sub | 1 | Pixel moins le voisin de gauche | Dégradés horizontaux, motifs horizontaux |
| Up | 2 | Pixel moins le pixel du dessus | Dégradés verticaux, motifs verticaux |
| Average (moyenne) | 3 | Pixel moins la moyenne du voisin de gauche et du pixel du dessus | Zones lisses, contenus fondus |
| Paeth | 4 | Pixel moins le prédicteur de Paeth (le plus proche entre gauche, dessus et haut-gauche) | Images naturelles complexes |
| Adaptatif | 5 | Teste tous les filtres sur chaque ligne et garde le meilleur | Toutes les images (meilleur choix par défaut) |
Le filtre adaptatif (parfois appelé « mixed » ou « all ») teste les cinq types de filtre sur chaque ligne de pixels et retient celui qui produit le résultat le plus compressible. Cette approche par force brute donne presque toujours le fichier le plus petit, mais l'encodage est plus long. Pour une diffusion web finale, le filtrage adaptatif est toujours le bon choix.
Quelle est l'importance des filtres ?
Un mauvais choix de filtre peut gonfler la taille du fichier de 10 à 30 %. Par exemple, appliquer le filtre « None » à une photographie (où les pixels voisins se ressemblent) gaspille une bonne partie du potentiel de compression. À l'inverse, appliquer « Sub » ou « Paeth » à une image à palette dont les index sont aléatoires peut produire un fichier plus gros qu'en l'absence de filtre.
C'est pourquoi le filtrage adaptatif est le choix par défaut le plus sûr — il sélectionne toujours le bon filtre pour chaque ligne, même si l'image mélange plusieurs types de contenu (comme une capture d'écran contenant à la fois du texte et des photos).
Optimisation de la palette de couleurs
La réduction de taille la plus spectaculaire s'obtient en convertissant un PNG 24 bits (16,7 millions de couleurs) en une palette 8 bits optimisée (256 couleurs). Des outils comme pngquant et pngnq utilisent des algorithmes avancés pour choisir les 256 meilleures couleurs et appliquent un tramage pour simuler les couleurs manquantes.
Comment fonctionne pngquant
pngquant analyse l'image pour trouver les 256 couleurs qui représentent le mieux l'original. Pour les pixels situés entre deux couleurs de la palette, il applique le tramage de Floyd-Steinberg — une technique qui répartit l'erreur de couleur sur les pixels voisins et crée l'illusion de couleurs supplémentaires par mélange spatial.
# Optimisation de palette de base (256 couleurs, qualité 65-80)
pngquant 256 --quality=65-80 input.png -o output.png
# Optimisation de palette en qualité maximale
pngquant 256 --quality=80-100 --speed 1 input.png -o output.png
# Convertir vers un nombre précis de couleurs
pngquant 64 input.png -o output.png # 64 couleurs
pngquant 16 input.png -o output.png # 16 couleurs (très léger)
Résultats typiques de l'optimisation de palette
| Type d'image | Taille en PNG-24 | PNG-8 (256 couleurs) | Gain | Impact visuel |
|---|---|---|---|---|
| Logo (12 couleurs) | 45 Ko | 8 Ko | 82 % | Aucun (sans perte) |
| Capture d'écran d'interface | 380 Ko | 95 Ko | 75 % | Tramage minime |
| Illustration (aplats de couleur) | 210 Ko | 52 Ko | 75 % | Nul à minime |
| Infographie avec dégradés | 620 Ko | 180 Ko | 71 % | Tramage dans les dégradés |
| Photographie | 8,5 Mo | 2,1 Mo | 75 % | Tramage important (préférez le JPG) |
Important : l'optimisation de palette est techniquement avec perte — elle réduit le nombre de couleurs disponibles. Toutefois, pour les images qui utilisent déjà moins de 256 couleurs distinctes, la conversion est parfaitement sans perte. Pour les images qui en comptent un peu plus, le tramage donne un résultat visuellement impossible à distinguer de l'original à une distance de visionnage normale.
Comparatif des outils d'optimisation PNG
Plusieurs outils spécialisés vont plus loin qu'ImageMagick pour la compression PNG. Chacun adopte une approche différente :
| Outil | Type | Approche | Gain typique |
|---|---|---|---|
| optipng | Sans perte | Essaie plusieurs combinaisons filtre/compression | 5–15 % |
| pngcrush | Sans perte | Teste par force brute toutes les combinaisons filtre/niveau | 5–15 % |
| zopflipng | Sans perte | Encodeur Zopfli de Google (plus lent, sortie DEFLATE plus compacte) | 8–20 % |
| pngquant | Avec perte (palette) | Réduit à une palette de 256 couleurs avec tramage | 60–80 % |
| oxipng | Sans perte | Alternative multithread à optipng (Rust) | 5–15 % |
Pour de meilleurs résultats, combinez un outil avec perte et un outil sans perte : lancez d'abord pngquant (si la réduction de palette est acceptable), puis zopflipng ou optipng sur le résultat pour une compression sans perte maximale :
# Chaîne de compression maximale
pngquant 256 --quality=80-100 input.png -o temp.png
zopflipng temp.png output.png
rm temp.png
Quand la compression PNG atteint ses limites
Aucune optimisation PNG ne peut contourner cette réalité fondamentale : pour les photographies, la compression sans perte ne peut pas rivaliser avec la compression avec perte. Ce n'est pas un défaut du PNG — c'est une certitude mathématique. Les algorithmes sans perte doivent préserver chaque pixel, tandis que le JPEG supprime les informations que l'œil ne perçoit pas.
| Type d'image | PNG optimisé | JPEG Q85 | Le PNG est plus lourd de |
|---|---|---|---|
| Photo de smartphone 12 MP | 14,2 Mo | 1,8 Mo | 7,9x |
| Photo de reflex 24 MP | 28,5 Mo | 4,7 Mo | 6,1x |
| Capture d'écran 1080p | 850 Ko | 240 Ko | 3,5x |
| Logo simple (12 couleurs) | 8 Ko | 22 Ko | Le JPEG est 2,8x plus lourd |
| Icône d'interface (aplats de couleur) | 3 Ko | 9 Ko | Le JPEG est 3x plus lourd |
La tendance est claire :
- Photographies et images naturelles complexes — convertissez en JPEG. Vous gagnerez un facteur 3 à 8 sans perte de qualité perceptible en Q85.
- Graphismes simples, logos, icônes, captures d'écran riches en texte — restez en PNG. Le fichier sera plus petit qu'en JPEG et les contours nets seront parfaitement préservés.
- Images avec transparence — restez en PNG (le JPEG ne gère pas la transparence). Envisagez le WebP comme alternative, qui prend en charge à la fois la compression avec perte et la transparence.
La réponse honnête : si votre PNG est une photographie et que la taille du fichier vous préoccupe, la meilleure stratégie de « compression PNG » consiste à le convertir en JPEG. Utilisez le convertisseur ci-dessus pour passer du PNG au JPG — vous constaterez généralement une réduction de taille de 70 à 90 %, avec une perte de qualité imperceptible.
Guide de compression PNG étape par étape
Voici un arbre de décision pratique pour réduire la taille d'un PNG :
Étape 1 : votre image est-elle une photographie ?
Si oui, convertissez-la en JPEG. Importez votre PNG dans le convertisseur ci-dessus : il produit un JPG en qualité 92, avec les zones transparentes remplies de blanc. C'est de loin l'action la plus efficace pour les photos au format PNG. Une photographie PNG de 15 Mo devient un JPEG de 1 à 2 Mo en Q85, sans différence visible.
Si non (il s'agit d'un graphisme, d'un logo, d'une icône ou d'une capture d'écran), passez à l'étape 2.
Étape 2 : combien de couleurs votre image utilise-t-elle ?
Vérifiez avec ImageMagick :
magick identify -verbose input.png | grep "Colors:"
Si elle compte 256 couleurs ou moins : convertissez-la en PNG-8 pour un gain de 70 à 80 % sans aucune perte de qualité :
magick input.png -strip -colors 256 -type Palette PNG8:output.png
Si elle en compte plus de 256 : déterminez si une réduction de palette avec tramage est acceptable, ou conservez le PNG-24.
Étape 3 : supprimez les métadonnées et maximisez la compression
# Compression sans perte maximale avec suppression des métadonnées
magick input.png -strip -quality 95 PNG:output.png
Étape 4 : utilisez des outils spécialisés pour gagner encore plus
# Optimisation sans perte (aucun changement de qualité garanti)
optipng -o7 -strip all input.png -out output.png
# OU réduction de palette avec perte (gain spectaculaire)
pngquant 256 --quality=80-100 input.png -o output.png
Compression PNG par lots
Pour compresser tout un dossier de fichiers PNG, les outils en ligne de commande sont la solution la plus rapide.
Compression par lots sans perte
# Linux / macOS : compression maximale + suppression des métadonnées
mkdir -p compressed
for f in *.png *.PNG; do
[ -f "$f" ] || continue
magick "$f" -strip -quality 95 "compressed/$f"
done
Optimisation de palette par lots (pngquant)
# Réduire tous les PNG à une palette de 256 couleurs
mkdir -p optimized
for f in *.png *.PNG; do
[ -f "$f" ] || continue
pngquant 256 --quality=80-100 "$f" -o "optimized/$f"
done
Windows PowerShell
New-Item -ItemType Directory -Force -Path ".\compressed"
Get-ChildItem *.png | ForEach-Object {
magick $_.FullName -strip -quality 95 (".\compressed\" + $_.Name)
}
Convertir des PNG en JPG par lots (gain maximal pour les photos)
# Convertir toutes les photos PNG en JPEG Q85
mkdir -p jpg_output
for f in *.png *.PNG; do
[ -f "$f" ] || continue
magick "$f" -quality 85 -interlace Plane -strip "jpg_output/${f%.*}.jpg"
done
Comment faire passer un PNG sous une limite de taille (par exemple 5 Mo)
La taille d'un PNG dépend surtout du nombre de pixels et du contenu de l'image. Pour vous repérer, une image RVB 8 bits non compressée occupe largeur × hauteur × 3 octets :
| Dimensions | Pixels | RVB non compressé |
|---|---|---|
| 4000 × 3000 | 12 MP | 36 Mo |
| 3000 × 2250 | 6,75 MP | 20,3 Mo |
| 2000 × 1500 | 3 MP | 9 Mo |
| 1600 × 1200 | 1,92 MP | 5,8 Mo |
La compression PNG réduit ensuite ce volume : un peu pour les photos, beaucoup pour les graphismes en aplats. Si une photo PNG dépasse encore la limite à des dimensions que vous jugez acceptables, convertissez-la en JPG ou réduisez-la à une palette de 256 couleurs.