PNG est l’exemple-type du standard qui a mis 15 ans à décoller, d’ailleurs si les éditeurs sont frileux avec les autres formats (lossless webp, flif...) c’est aussi à cause de ça, on en a tellement chié qu’on n’ose pas se lancer dans autre chose parce qu’on est en droit de penser qu’on risque d’être seul pendant au moins 15 ans (alors qu’on sera peut-être seul pendant 15 ans pour la seule raison que les autres ont peur de ne pas être seul pendant 15 ans)...
En fait c’est quoi un PNG ? Un PNG est un format d’image qui n’utilise pas un algorithme de compression adapté aux images, ça utilise zlib, oui oui, comme gzip. Pour simplifier un peu un PNG est un zip avec un format custom.
La compression PNG n’est absolument pas adaptée à la compression d’image. D’ailleurs, une image non compressée en tga ou bmp dans un 7z fait mieux, tout simplement parce que 7z ou xz compresse mieux que zip ou gz.
La seule chose qu’il y a de spécifique aux images dans PNG c’est qu’il y a une multitude de profils, en réalité PNG fait reposer sa (relative) performance sur les optimiseurs. Un optimiseur va regarder s’il y a pas beaucoup de couleur et si ça vaut le coup faire une palette, un optimiseur va regarder si le canal alpha a pas beaucoup de variations et si ça vaut le coup faire une palette, voire faire du canal alpha une image 1bit (noir et blanc), ou le supprimer s’il ne sert à rien, un optimiseur va regarder si le canal alpha est complètement transparent et donc virer tout ce qu’il y a dans les canaux RGB (ce qui est alors une destruction car certains usages peuvent avoir à traiter les canaux indépendamment), etc.
Il y a donc une très grande quantité de formats PNG existants qui combinent ces différentes variations :
RGB normal
RGB palette
RGB niveaux de gris
RGB noir et blanc
Alpha palette
Alpha niveaux de gris
Alpha noir et blanc
et d’autres...
Ça signifie aussi que si on veut réellement optimiser ses images en taille et bénéficier de ces profils PNG qui ne sont pas là pour rien, on commence à utiliser des combinaisons très peu testées vu qu’en réalité personne n’optimise, et PAF! le PNG.
Il faut considérer que 20 ans après on ne peut compter sur la prise en charge de PNG que dans ses profils les plus courant, c’est à dire qu’il faut être prudent avec les optimiseurs, c’est à dire qu’on doit être prudent avant d’utiliser la seule fonctionnalité qui, dans PNG, est à peu-près spécifique à la compression d’image.
PNG est une catastrophe. On utilise PNG pour la seule raison qu’on en a chié pendant 20 ans. Ça fait 23 ans que PNG est sorti et j’ai corrigé il y a 6 mois un bug de chargement de certains formats de PNG dans un logiciel qui est presque aussi vieux, ça fait juste peur. En fait les plus gros utilisateurs de ce logiciel aujourd’hui préfèrent mettre des giga-octets de TGA non compressés dans leur dépôts git plutôt qu’utiliser PNG, ça en dit long...
PNG était le pire exemple à donner.
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: PDF hybride
Posté par Thomas Debesse (site web personnel, Mastodon) . En réponse au journal Hackathon Factur-X le 24-25 janvier 2019 à Paris. Évalué à 3. Dernière modification le 22 janvier 2019 à 10:02.
15 ans ?
PNG est l’exemple-type du standard qui a mis 15 ans à décoller, d’ailleurs si les éditeurs sont frileux avec les autres formats (lossless webp, flif...) c’est aussi à cause de ça, on en a tellement chié qu’on n’ose pas se lancer dans autre chose parce qu’on est en droit de penser qu’on risque d’être seul pendant au moins 15 ans (alors qu’on sera peut-être seul pendant 15 ans pour la seule raison que les autres ont peur de ne pas être seul pendant 15 ans)...
En fait c’est quoi un PNG ? Un PNG est un format d’image qui n’utilise pas un algorithme de compression adapté aux images, ça utilise zlib, oui oui, comme gzip. Pour simplifier un peu un PNG est un zip avec un format custom.
La compression PNG n’est absolument pas adaptée à la compression d’image. D’ailleurs, une image non compressée en tga ou bmp dans un 7z fait mieux, tout simplement parce que 7z ou xz compresse mieux que zip ou gz.
La seule chose qu’il y a de spécifique aux images dans PNG c’est qu’il y a une multitude de profils, en réalité PNG fait reposer sa (relative) performance sur les optimiseurs. Un optimiseur va regarder s’il y a pas beaucoup de couleur et si ça vaut le coup faire une palette, un optimiseur va regarder si le canal alpha a pas beaucoup de variations et si ça vaut le coup faire une palette, voire faire du canal alpha une image 1bit (noir et blanc), ou le supprimer s’il ne sert à rien, un optimiseur va regarder si le canal alpha est complètement transparent et donc virer tout ce qu’il y a dans les canaux RGB (ce qui est alors une destruction car certains usages peuvent avoir à traiter les canaux indépendamment), etc.
Il y a donc une très grande quantité de formats PNG existants qui combinent ces différentes variations :
et d’autres...
Ça signifie aussi que si on veut réellement optimiser ses images en taille et bénéficier de ces profils PNG qui ne sont pas là pour rien, on commence à utiliser des combinaisons très peu testées vu qu’en réalité personne n’optimise, et PAF! le PNG.
Il faut considérer que 20 ans après on ne peut compter sur la prise en charge de PNG que dans ses profils les plus courant, c’est à dire qu’il faut être prudent avec les optimiseurs, c’est à dire qu’on doit être prudent avant d’utiliser la seule fonctionnalité qui, dans PNG, est à peu-près spécifique à la compression d’image.
PNG est une catastrophe. On utilise PNG pour la seule raison qu’on en a chié pendant 20 ans. Ça fait 23 ans que PNG est sorti et j’ai corrigé il y a 6 mois un bug de chargement de certains formats de PNG dans un logiciel qui est presque aussi vieux, ça fait juste peur. En fait les plus gros utilisateurs de ce logiciel aujourd’hui préfèrent mettre des giga-octets de TGA non compressés dans leur dépôts git plutôt qu’utiliser PNG, ça en dit long...
PNG était le pire exemple à donner.
ce commentaire est sous licence cc by 4 et précédentes