Pngcrush ou Optipng ?

Je reprend mon test précédent, plus de 7000 images PNG de taille diverses, beaucoup de 1 à 5 ko, d’autres jusqu’à 250 ko pour un total de 450 Mo. Faut-il utiliser pngcrush ou optipng pour recompresser ses images png ?

PNGcrush me donnait 403 Mo (10% de gain) pour 75 minutes avec les options par défaut, et 399 Mo (11% de gain) en le poussant à fond mais en prenant alors entre 8 et 9 heures.

Optipng, avec les options par défaut, arrive à 392 Mo (13% de gain, donc mieux que le maximum de pngcrush) pour deux heures et demie. C’est long, mais on gagne deux points. À noter tout de même que 10% des fichiers sont légèrement plus gros avec optipng qu’avec pngcrush, mais en moyenne quand optipng est plus gros c’est de moins de 1%, alors que quand il est plus petit c’est plus significatif (et il plus petit dans 90% des cas).

Si il est franchement inacceptable d’imaginer mettre huit heures pour quelques points, le compromis résultat/temps d’optipng peut avoir du sens. Si vous n’êtes pas trop pressés, c’est l’outil qu’il vous faut.

Malgré le mauvais retour des options « brutes » avec pngcrush, j’ai tenté la même chose avec optipng (option -o7). On gagne au plus 2 Mo sur l’échantillon global, et le temps de calcul dépasse la journée. Autant dire que là aussi, sauf si vous avez une bonne raison, restez avec les options par défaut.

Publié par edaspet

Plus d'informations sur mon profil en ligne

9 réponses sur « Pngcrush ou Optipng ? »

  1. Le problème dans votre test ce sont les échantillons d’exemple. 250 ko pour un PNG, même sans voir l’image, on peut déjà deviner que le format de sortie est inadapté.

    Tenter de compresser quelque chose qui ne s’y prête pas, non seulement c’est une perte de temps mais cela fausse aussi votre comparatif sur le rapport gain/temps par rapport aux différentes tentatives des deux softs.

    C’est comme si vous essayiez de compresser un fichier AVI (qui utiliserait déjà un codec qui compresse) avec un compresseur ZIP en comparant les options Minimum / Maximum.

    Minimum va prendre 20 secondes, et va atténuer le poids du fichier de 0.01% ;
    Maximum va prendre 980 secondes, et va atténuer le fichier de 0.02%.

    Conclusion faussée : Minimum est mieux.

  2. En même temps je suis d’accord avec toi, en même temps peu importe.

    Je pars du web, tel qu’il est. Les gens font des png pour tout et n’importe quoi, c’est une erreur, nous sommes d’accord, mais le résultat est là.

    L’intégrateur, celui qui est en bout de chaîne et qui est plus ou moins responsable des questions de performance, a rarement la main sur les questions de qualité. C’est décidé par le graphiste, et parfois c’est se battre contre les moulins. Par contre, tenter de recompresser les chunks png sans perte, on ne pourra jamais lui reprocher.

    Savoir ce que ça donne dans une optique « automatique » est intéressant. J’ai fait ces tests en partie à l’occasion du codage d’un de ces outils automatiques utilisés par les gens « qui n’ont pas le choix ». Je prend un échantillon tel qu’il est trouvé sur le web, parce que c’est ce type d’échantillon qui sera réutilisé derrière.

    Grande partie de ces images devrait être sous jpeg, nous sommes d’accord, mais ça n’entre finalement pas en ligne de compte à partir du moment où les utilisateurs eux auront à les manier en png potentiellement sans avoir le droit de prendre la décision de les changer de format.

    Maintenant je vais tenter de refaire la même chose avec une barrière à 50ko et une moyenne à moins de 5ko, pour voir. Restez branchés, ça se passera aussi ici 😉

  3. @css-ig :

    C’est comme si vous essayiez de compresser un fichier AVI (qui utiliserait déjà un codec qui compresse) avec un compresseur ZIP en comparant les options Minimum / Maximum.

    Comme le dit Éric en réponse à ton commentaire, c’est hélas à ça que ressemble le seul travail qu’il est souvent possible de faire. On devrait produire de meilleurs AVI, mais en pratique, le mieux que l’on puisse souvent faire, c’est zipper par dessus. Le web, c’est beaucoup de compromis, beaucoup de contraintes.

    Ton observation reste tout à fait vraie néanmoins. J’ai lu ton site, c’est une mine d’or 🙂

  4. Ok, alors après un test sur un échantillon d’image plus petites (moyenne < à 7 ko, maximum à 20 ko) les résultats sont du même ordre de grandeurs que dans ce billet et le précédent. - Gain moyen de l'ordre de 10% - 3 points de mieux en passant de pngcrush à optipng, mais en y passant le double du temps - pour pngcrush l'option "-brute" ne fait gagner que 1,4 point, mais pour 8 fois plus de temps - pour optipng l'option "-o7" ne fait même pas un dizième de point de mieux mais on y passe 11 fois plus de temps. Globalement ça donne vraiment la même chose quel que soit l'échantillon : - optipng est meilleur que pngcrush, mais à vous de voir si doubler le temps de calcul est un bon deal, probablement que si - pngcrush avec l'option brutale est à proscrire (3 à 4 fois plus lent qu'optipng pour de moins bons résultats) - l'option avancée d'optipng ne vaut vraiment pas le cout, sauf si vous ne savez pas quoi faire ni de vos cpu ni de votre climatisation

  5. Avez-vous essayer de tester l’outil pngnq ?

    Je m’y suis amusé à comparer avec optipng…
    Je l’ai trouvé aussi efficace, et surtout bien plus rapide, surtout si on a le malheur d’utiliser l’option ‘-o7’ d’optipng.

    Et, vous ?

  6. PNGOUT et AdvPNG (AdvanceCOMP) sont normalement plus puissants mais encore plus lents, vu qu’ils remplacent le Deflate de la zlib par celui de 7-Zip et un autre maison.
    Le gros avantage d’OptiPNG est qu’il fait toutes les tentatives en mémoire sans accès disque.
    Si vous avez un Mac sous Mac OS X 10.5 vous pouvez essayer ImageOptim qui permet de lancer une recompression de fichier .png avec PngCrush, OptiPNG, AdvPNG et PNGOUT en parallèle…

  7. pngnq est très performant, mais j’ai peur qu’il ne s’agisse pas d’une opération sans pertes. Il faut encore que je fasse tourner des tests à ce niveau pour vérifier.

    Pour pngout et advpng je les ai mis sur ma liste à tester, je vous dirai ce qu’il en est.

Les commentaires sont fermés.