En recherchant « compression PNG », les outils en tête se vantent tous de « sans perte » et de « qualité inchangée », mais le taux de compression peut varier du simple au double : certains économisent 70 %, d'autres seulement 10 %.
La différence ne réside pas dans un algorithme plus magique, mais dans le fait que la « perte » dont ils parlent n'est pas la même chose.
Cet article explique cette distinction avant de recommander des outils selon vos besoins.
Distinction : deux types de « sans perte »
Sans perte réelle : aucun pixel ne change
Le format PNG est lui-même sans perte ; sa taille est déterminée par deux parties : la manière dont les données des pixels sont organisées et compressées avec Deflate, ainsi que la quantité de métadonnées incluses dans le fichier.
La compression sans perte réelle ne travaille que sur ces deux aspects :
- Utiliser une méthode de stockage plus compacte. Par exemple, si l'image n'utilise réellement que 200 couleurs, passer en mode palette ; s'il n'y a pas de transparence, supprimer le canal Alpha ; stocker l'image en niveaux de gris.
- Essayer des filtres et des paramètres Deflate plus efficaces. Pour les mêmes pixels, différentes méthodes de codage peuvent entraîner des différences de taille importantes. Les outils de design qui exportent des PNG visent souvent la vitesse et ne tentent pas sérieusement ces optimisations.
- Supprimer les métadonnées. Informations de l'outil d'export, horodatage, annotations textuelles, miniatures, etc.
Une fois décompressée, l'image est strictement identique pixel par pixel à l'original. L'arrière-plan est qu'il ne s'agit que d'éliminer la « marge » due à un encodage peu sérieux.
« Sans perte apparente » : en fait une quantification avec perte
Des outils comme TinyPNG ou pngquant économisent beaucoup parce qu'ils font une autre chose : réduire le nombre de couleurs de l'image PNG en dessous de 256 (quantification), puis utiliser du tramage pour que cela soit imperceptible à l'œil nu.
C'est une méthode avec perte, les pixels ont effectivement changé. Elle fonctionne très bien pour la plupart des icônes de sites web et des illustrations ; elle est donc très utile. Cependant, si vous avez besoin d'un « changement absolu de pixels » — par exemple pour que les coupes de l'interface utilisateur correspondent strictement au design, pour effectuer des comparaisons pixel par pixel de captures d'écran, ou pour que les ressources puissent être modifiées ultérieurement —, elle ne convient pas.
La méthode la plus simple pour déterminer si un outil est réellement sans perte est d'utiliser ImageMagick pour comparer avant et après la compression :
compare -metric AE original.png compresse.png null:
Si la sortie est0, cela signifie qu'aucun pixel n'a changé.
Recommandations d'outils PNG sans perte
Ligne de commande : oxipng (le choix principal)
oxipng est un optimiseur PNG sans perte écrit en Rust, qui peut être considéré comme le successeur moderne de l'ancien outil OptiPNG :
- Multithread, rapide, adapté au traitement par lots.
- Niveaux de compression de
-o 0à-o 6(et-o max) pour ajuster la force ; plus le niveau est élevé, plus la compression est lente et importante. - Option
--zopflipour une compression supplémentaire, mais beaucoup plus lente. - Le service Squoosh utilise oxipng pour sa compression PNG sans perte.
bash
brew install oxipng
oxipng -o 2 --strip safe -r ./images # Traitement récursif d'un répertoire, suppression uniquement des métadonnées sans impact sur l'affichage
Ligne de commande : zopflipng (pour un volume minimal)
Proposé par Google, il utilise l'algorithme Zopfli pour retraiter la compression Deflate. Il permet généralement d'extraire un peu plus que la compression par défaut d'oxipng, mais est beaucoup plus lent, et les images volumineuses peuvent prendre un temps considérable. Idéal pour les ressources statiques « compressées une fois et utilisées longtemps », comme les logos de sites web ou les icônes intégrées dans les applications.
Ligne de commande : OptiPNG, pngcrush (classiques)
Tous deux sont des optimiseurs PNG sans perte classiques, encore présents dans de nombreuses chaînes d'outils. Ils ont été largement couverts par oxipng, il n'est donc pas nécessaire de les choisir spécifiquement pour de nouveaux projets.
Web : Squoosh
Outil en ligne de Google ; pour une compression PNG sans perte, choisissez l'encodeur OxiPNG (notez de ne pas cocher « Reduce palette », car cette option réduit les couleurs avec perte).
L'avantage est qu'il n'est pas nécessaire de l'installer ; vous pouvez comparer à gauche et à droite. L'inconvénient est qu'il ne traite qu'un seul fichier à la fois ; après le téléchargement, vous devez renommer et remplacer les fichiers vous-même. Idéal pour la compression occasionnelle d'une ou deux images.
Interface graphique Mac : ImageOptim
Outil Mac open-source et gratuit, intégrant en interne plusieurs optimiseurs comme oxipng, Zopfli et pngcrush, qui essaient tour à tour pour obtenir le plus petit résultat. Le mode par défaut est sans perte (il faut activer manuellement l'option avec perte).
Il offre une compression puissante, mais est lent lorsqu'il est configuré avec tous les optimiseurs activés ; il remplace également le fichier original, il est donc conseillé de faire une sauvegarde avant de commencer.
Interface graphique Mac : ImgZilla
ImgZilla est notre outil de compression d'images pour macOS. Sa méthode de traitement des PNG est directe :
- Utilise oxipng pour la compression sans perte réelle, avec un niveau de compression de 2 (identique au défaut de Squoosh), équilibrant vitesse et volume. Aucun pixel n'est modifié, ce que vous pouvez vérifier avec la commande
compareci-dessus. - Pas de quantification, pas de réduction de couleur, pas de conversion de format, pas de redimensionnement. Le PNG reste un PNG après compression.
- Compression à la source : le nom et le chemin du fichier restent identiques, aucune modification des liens dans le code ou les documents n'est nécessaire.
- Glisser-déposer un dossier entier : analyse récursive des sous-dossiers, saut automatique des fichiers cachés et de
node_modules; traite également JPG, GIF, WebP, HEIC, AVIF et SVG ensemble. - L'original est déplacé vers la corbeille par défaut ; si vous n'êtes pas satisfait, faites un clic droit sur « Remettre à l'origine ».
- Pas de forçage pour les images difficiles : les fichiers avec un taux de compression inférieur à 0,4 % sont marqués comme « déjà minimal », conservés tels quels, sans impact sur le quota gratuit.
- Fonctionne entièrement en local ; aucun serveur n'est utilisé pour vos ressources.
Il faut préciser deux points :
- Il ne cherche pas le volume minimal absolu de PNG. Le niveau 2 est beaucoup plus rapide que
-o maxou Zopfli, au prix d'une économie potentielle de quelques pourcents. Si votre besoin est « réduire un logo à la dernière octet », zopflipng ou ImageOptim sont plus adaptés. - Par défaut, toutes les métadonnées PNG sont supprimées, y compris les profils de couleurs. Les images sRGB ordinaires n'en sont pas affectées ; toutefois, si l'image contient un profil de couleur étendu tel que Display P3 (fréquent dans les captures d'écran Mac ou les exports logiciels de design), sa suppression peut entraîner un léger changement de couleur dans les logiciels de gestion des couleurs. Pour les images nécessitant une précision chromatique stricte, vous pouvez activer « Conserver les informations EXIF » dans les paramètres pour conserver les métadonnées telles quelles.
Résumé sous forme de tableau
| Outil | Type | Sans perte réelle ? | Par lot | Idéal pour |
|---|---|---|---|---|
| oxipng | Ligne de commande | ✅ | ✅ | Développeurs, processus de build |
| zopflipng | Ligne de commande | ✅ | À gérer via script | Volume minimal, indifférent à la vitesse |
| OptiPNG / pngcrush | Ligne de commande | ✅ | ✅ | Projets anciens en cours d'utilisation |
| Squoosh | Web | ✅ (OxiPNG, sans réduction de palette) | ❌ Un par un | Compression occasionnelle d'une ou deux images |
| ImageOptim | App Mac | ✅ (par défaut) | ✅ | Utilisateurs Mac voulant la plus forte compression |
| ImgZilla | App Mac | ✅ | ✅ Glisser-déposer | Compression par lots, ne pas changer les chemins, possibilité d'annuler |
| TinyPNG / pngquant | Web / Ligne de commande | ❌ Quantification avec perte | Selon la version | Accepter une légère perte pour un volume plus faible |
Comment choisir
- Uniquement si les pixels ne doivent pas changer et que vous êtes à l'aise avec la ligne de commande : oxipng, intégrez-le dans un script de build pour un gain de temps durable.
- Pour comprimer un fichier unique au maximum : zopflipng.
- Traitement graphique par lots sur Mac : ImageOptim offre plus de force ; ImgZilla est plus rapide, permet de retrouver l'original depuis la corbeille et traite également d'autres formats.
- Accepter une légère perte et vouloir plus petit : TinyPNG / pngquant, mais sachez que ce n'est plus de la compression sans perte.
Pour finir, une petite note : le gain de compression sans perte dépend de la manière dont le PNG a été exporté. Les PNG directement exportés par des outils de design ou jamais traités contiennent souvent une certaine marge ; une fois optimisés, il est difficile d'en extraire beaucoup plus — l'affichage « déjà minimal » signifie simplement que l'image est déjà bien optimisée, et non que l'outil est inefficace.
ImgZilla prend actuellement en charge uniquement macOS (version 12.3 et supérieure) et est disponible sur le Mac App Store. La version gratuite permet de compresser 10 images par jour, et le quota n'est compté que si la compression réussit — glissez un dossier rempli de PNG, puis vérifiez avec
compareque les pixels sont vraiment inchangés.
}
