piercing toulouse

Accueil > Articles publiés > Techniques d'optimisation de PNG

Techniques d'optimisation de PNG

Cet article au titre prétentieux rassemble quelques techniques et astuces pour tenter d'optimiser le rapport qualité/poids des images PNG que vous utilisez sur votre site, en vous proposant d'étudier les caractéristiques qui feront la différence ; le but va être de faire un choix entre les différents -et méconnus- formats PNG, afin de bien adapter un fichier à l'environnement dans lequel il est intégré. Lorsqu'un encodeur enregistre une image au format PNG (Portable Network Graphics), il choisit le format d'encodage selon les caractéristiques de l'image (nombre de couleurs, présence de pixels répétés, présence de dégradés, etc.) ; tout ceci a été vu une première fois dans l'article « Introduction aux encodages et conversion ».

Script PNG : Optimisation rapide

D'autres critères pourront être étudiés pour réduire le poids de vos fichiers. Cette première partie va concerner ceux qui souhaitent optimiser rapidement et automatiquement : des programmes vont se charger d'analyser l'image, et vont tenter de réduire le poids selon divers critères ; cette méthode est sans aucun doute la solution qui est la plus adaptée car l'optimisation recherchée peut nécessiter un temps considérable, et nécessite plus d'investissement.

La plus simple des méthodes est donc d'utiliser un ou plusieurs programmes, conçus pour optimiser les images PNG. La plupart d'entre eux opèrent en supprimant certaines données de l'entête, en réencodant le fichier PNG dans un format différent, en applicant divers filtres, et diverses méthodes de compression. La plupart de ces programmes sous l'environnement Windows fonctionnent grâce à des instructions qui doivent être saisies via l'interface de commande manuelle ; ils ne disposent pas d'interface graphique classique.

C'est la raison pour laquelle j'ai conçu un ScriptPNG : il s'agit d'un simple fichier batch -au format bat-, qui propose un menu d'options et qui va exécuter pour vous les commandes des programmes (fournis). Comme vous pouvez le constater ci-contre, le menu est composé d'options à saisir, entre 1 et 9.

menu du script qui propose les actions

Caractéristiques de l'archive

1 - Optimisation rapide

Pour quel usage ? : Cette option sera utilisée pour optimiser une image entrelacée, car elle conservera cet entrelacement intact. Elle sera efficace (car rapide) sur les images encodées en TrueColor, disposant d'une définition élevée.

2 - Optimisation complète

Pour quel usage ? : Cette option va permettre de tester plusieurs algorithmes de compression, pour obtenir une image plus légère que l'option 1 dans de nombreux cas. Attention, l'entrelacement d'une image est supprimé. Elle sera efficace sur la plupart des images (particulièrement sur les images pré-optimisées), mais plus lent à exécuter.

Options 3 à 9 - Convertir en PNG x couleurs

Pour quel usage ? : Très utile sur les images redimensionnés volontairement par logiciel (miniatures), et permet de réduire considérablement le poids de celle ci. Attention, ce script peut détériorer l'image lorsqu'il employé sur des images à fortes résolutions. N'utilisez pas les options 3 à 9 sur des images transparentes (quelque soit l'encodage : Paletted, GrayScale ou TrueColor) : les valeurs seraient détruites.

Résultats du ScriptPNG : Option 1 et 2

Dans ce tableau sont référencées les résultats des programmes lorsqu'ils sont utilisés seuls, à comparer avec les résultats lorsqu'ils sont combinés. A l'origine, les fichiers sont compréssés avec l'éditeur The GIMP 2.2.13 (réglage maximal pour la compression, sans autres réglages) ; voici les résultats obtenus :

Comparatifs de programmes seuls, et du ScriptPNG
Image PNG
Gimp 2.2.13
PNGOptimizer
v1.54
AdvanceCOMP
v1.15
PNGOUT
29.10.2006
OptiPNG
v0.5.5
ScriptPNG
01.02.2007
Algorithme zlib 7-zip kzip zlib (280) Les quatre
GrayScale 2 couleurs
287 octets
226 octets
(- 22 %)
Non supporté 142 octets
(- 51 %)
280 octets
(- 1 %)
123 octets
(- 56 %)
Paletted 4 couleurs
241 octets
188 octets
(- 22 %)
-
(plus lourd)
181 octets
(- 25 %)
238 octets
(- 1 %)
181 octets
(- 25 %)
Paletted 16 couleurs
359 octets
306 octets
(- 15 %)
331 octets
(- 8 %)
311 octets
(- 14 %)
-
(plus lourd)
306 octets
(- 15 %)
Paletted 256 couleurs
1823 octets
1783 octets
(- 3 %)
1785 octets
(- 3 %)
-
(plus lourd)
-
(plus lourd)
1783 octets
(- 3 %)
Paletted alpha
170 octets
117 octets
(- 32 %)
141 octets
(- 18 %)
130 octets
(- 24 %)
-
(plus lourd)
95 octets
(- 43 %)
Paletted alpha variables
646 octets
598 octets
(- 8 %)
500 octets
(- 33 %)
551 octets
(- 15 %)
643 octets
(- 1 %)
504 octets
(- 32 %)
GrayScale et tRNS
396 octets
336 octets
(- 15 %)
301 octets
(- 24 %)
346 octets
(- 13 %)
-
(plus lourd)
333 octets
(- 15 %)
GrayScale+alpha
2823 octets
2769 octets
(- 2 %)
-
(plus lourd)
-
(plus lourd)
-
(plus lourd)
2498 octets
(- 12 %)
TrueColor et tRNS
18 464 octets
16 653 octets
(- 10 %)
-
(plus lourd)
15 894 octets
(- 15 %)
18 433 octets
(- 1 %)
15 894 octets
(- 15 %)
TrueColor+alpha
20 629 octets
20 565 octets
(- 1 %)
-
(plus lourd)
19 410 octets
(- 6 %)
20 587 octets
(- 1 %)
19 410 octets
(- 6 %)
TrueColor+alpha et bKGD
20 647 octets
20 583 octets
(- 1 %)
-
(plus lourd)
19 410 octets
(- 6 %)
20 605 octets
(- 1 %)
19 410 octets
(- 6 %)
TrueColor dégradé
1012 octets
972 octets
(- 4 %)
-
(plus lourd)
-
(plus lourd)
-
(plus lourd)
972 octets
(- 4 %)
Paletted Entrelacé
43 082 octets
40 786 octets
(- 5 %)
Non supporté Non supporté 40 680 octets
(- 6 %)
40 786 octets
(- 5 %)
16 777 216 couleurs
91 798 octets
91 629 octets
(- 1 %)
-
(plus lourd)
91 730 octets
(- 1 %)
-
(trop long)
91 495 octets
(- 1 %)

La première partie de cet article a traité l'optimisation rapide : celle de tous les jours, facile à utiliser. Mais même si ces programmes sont effectivement très efficaces, il ne faut pas oublier cette optimisation est purement logicielle ; il est possible de jouer sur divers paramètres du format PNG pour diminuer de manière bien plus significative le poids des fichiers.

Ces techniques se basent sur la modification de la matrice de l'image : modifier le nombre de couleurs, utiliser une profondeur d'image différente, modifier les couleurs entre elles, suppression de certaines fontionnalités, conversion : les méthodes ne manquent pas. Le but de l'optimisation poussée est de restituer un effet produit par un effet équivalent, mais dont le poids à mystérieusement diminué. L'oeil humain ne pouvant restituer l'exacte teneur des images, on ne fait généralement aucune différence (ou une différence négligeable) entre l'original, et la version optimisée.

La profondeur des pixels

A titre général, la profondeur des pixels représentent indirectement le type d'encodage utilisé sur l'image : est-ce TrueColor, Paletted, GrayScale ? L'encodage utilisé est-il adapté à l'image ? Telles sont les questions que vous devez vous poser. Par exemple, évitez de convertir une image GIF en PNG TrueColor sous pretexte d'un gain de qualité : celle ci sera identique, et le poids du PNG sera généralement plus élevé.

Utilisez des logiciels d'optimisation, comme par exemple le ScriptPNG, qui dispose de programmme pouvant analyser le contenu de l'image, et la convertir à la méthode d'encodage qui propose la même qualité de restitution, tout en proposant de réduire le poids du PNG. Il arrive dans certains cas que ces programmes convertissent un PNG TrueColor+alpha, en PNG Paletted avec valeurs alpha : la qualité de restitution est identique, mais le poids est bien moindre.

Bien que les cas soient moins nombreux (voire rarissime en fait), il peut arriver que les programmes d'optimisation ne convertissent pas de manière optimale. Vérifiez que l'image est enregistrée selon une profondeur adaptée : une PNG disposant de 2 couleurs devrait disposer d'une profondeur de 1 bit/pixel ; un PNG disposant de 4 couleurs devrait disposer d'une profondeur de 2 bits/pixels, etc. La plupart des logiciels commerciaux encodent par défaut le PNG en Paletted 8 bits/pixels (qu'ils nomment généralement PNG8), et n'enregistrent pas l'image selon ses caractéristiques : une optimisation est peut être envisageable.

L'importance du choix de la profondeur de l'image
Une image PNG Version optimisée
image 1 seule couleur, haute définition, en TrueColor la même image, optimisée
Définition : 1210 x 980 pixels
HTML : 150 x 150 pixels
Définition : 1210 x 980 pixels
HTML : 150 x 150 pixels
Encodage : TrueColor 24 bits/pixel Encodage : Paletted 1 bit/pixel
Poids : 5.35 Ko (5479 octets) Poids : 0.23 Ko (240 octets)

Que cela soit par comparaison humaine ou logicielle, ces deux images sont restituées de manière identique : il n'y a aucune perte de qualité entre la première et la seconde, tout simplement parcequ'elle ne nécessite pas un encodage TrueColor : pourquoi donner une multitude de variables à un pixel alors qu'il n'en nécessite qu'une ?

Une quantification étudiée

Les programmes qui composent le ScriptPNG sont des programmes d'optimisation : par définition, l'optimisation est la modification d'une donnée par une autre généralement mieux adaptée, mais dont le résultat reste entièrement identique ; dans le cas des images PNG, c'est modifier l'encodage lorsque c'est possible, ou supprimer certaines données inutiles de l'image, utiliser un algorithme de compression plus performant, etc, sans dégrader le contenu initial de l'image.

Il est également possible d'effectuer une dégradation sur une image, qui serait quasi-invisible à l'oeil humain. En admettant cette dégradation douce, la donne change complètement : si par exemple on choisit de convertir un PNG TrueColor en Paletted, on conçoit la possibilité d'effectuer un nouveau filtrage, selon l'encodage Paletted, et d'appliquer par la suite l'algorithme de compression. Cette dégradation douce, un logiciel ne peut pas la juger ; c'est à vous, utilisateur, de constater si le résultat obtenu apporte une qualité de restitution toujours acceptable.

Les dégradations douces sur les images
1327 couleurs 253 couleurs 127 couleurs 64 couleurs
pot de peinture avec toile, 1327 couleurs pot de peinture avec toile, 256 couleurs pot de peinture avec toile, 128 couleurs pot de peinture avec toile, 64 couleurs
Encodage : TrueColor 24 bits/pixel Encodage : Paletted 8 bits/pixel Encodage : Paletted 8 bits/pixel Encodage : Paletted 8 bits/pixel
Poids : 5.28 Ko (5402 octets) Poids : 3.07 Ko (3140 octets) Poids : 2.25 Ko (2307 octets) Poids : 1.75 Ko (1796 octets)

Le ScriptPNG peut réaliser ces étapes grâces aux options spécifiées ci-dessus. Au fur et à mesure que vous diminuez le nombre de couleurs, la qualité de restitution va également diminuer.

La définition des images

La définition des images, c'est à dire le rapport de sa longueur par sa hauteur, peut être spécifiée par des attributs widht et height de la balise <img />. Une très grande majorité des navigateurs savent exploiter le contenu de la plupart des formats qui sont utilisés, pour en récupérer l'attribut de définition.

<img alt="description" src="image.png" width="100" height="100" />

Ces attributs permettent d'annoncer la définition de l'image au logiciel qui exploite le code HTML ; ça lui permet d'effectuer une structuration graphique plus rapidement, sans avoir à analyser le contenu de l'image pour y récupérer la défintion.

Ces attributs peuvent avoir une toute autre fonction (bien qu'il s'agisse plus d'un effet secondaire, plutôt que d'une réelle fonction) : ils peuvent être utilisés pour contraindre le navigateur à restituer l'image dans des définitions demandées, qui sont généralement inférieures aux définitions réelles de l'image. C'est expliqué ici et c'est aussi valable pour le format PNG.

Le fichier PNG est plus lourd ...

Un fichier PNG aux définitions réduites par logiciel peut voir son nombre de couleurs se multiplier, et ce malgré sa définition : en effet, le logiciel n'effectue pas un simple dimensionnement mais essaye de conserver l'intégrité, et la meilleur qualité de restitution qu'il peut obtenir. Le fichier obtenu peut donc occuper un espace poids bien plus important, selon les caractéristiques de l'image originale.

Dans l'exemple ci dessous, le logiciel va multiplier par 450 le nombre de couleurs lorsque celle ci sera dimensionnée. Ce phénomène est prévu pour tous types d'images ; dans de nombreux cas, il s'avère totalement injustifié à l'oeil humain, et engendre logiquement un phénomène de surpoids : le PNG est réencodé en TrueColor, avec de nombreuses couleurs :

Dimensionnement logiciel et optimisation
Image originale Dimensionnée, optimisation logicielle Dimensionnée, modification
image a la définition originale, représentant le scriptpng l'image est dimensionnée, mais lourde l'image est dimensionnée, et légère
Encodage : Paletted 2 bits/pixel Encodage : TrueColor 24 bits/pixel Encodage : Paletted 4 bits/pixel
Nombre de couleurs : 3 Nombre de couleurs : 1348 Nombre de couleurs : 4
Optimisation : ScriptPNG Option 2 Optimisation : ScriptPNG Option 2 Optimisation : ScriptPNG
- Option 8
-Option 2
Compression : Maximale, filtrée Compression : Maximale, filtrée Compression : Maximale, filtrée
Poids : 1.45 Ko (1487 octets) Poids : 21.65 Ko (22 171 octets) Poids : 2.25 Ko (2299 octets)

D'une manière totalement autonome, le ScriptPNG peut raisonnablement résoudre le problème, en utilisant le phénomène de quantification décrit plus haut dans l'article : à partir de la première image dimensionnée, j'ai simplement appliqué l'option 8 du script, qui consiste à convertir l'image en une image diposant d'au maximum 8 couleurs. L'encodage change en Paletted, l'image ne dispose plus que de 8 entrées : logiquement, le poids du PNG diminue. A ce nouveau fichier obtenu sont appliqués les différents algorithmes de compression avec l'option 2. L'image est dégradée par l'option 8, mais cela reste négligeable à l'oeil humain.

Notez qu'avec une étude plus poussée encore, notamment en utilisant et en combinant les techniques décrites dans cet article, il est possible d'obtenir une image qui conserve une qualité de restitution acceptable, tout en diminuant progressivement son poids. C'est le cas de l'image ci-dessus, présentée dans le tableau.

L'image est en effet toujours encodée en Paletted, et dispose également d'une profondeur de 4 bits/pixel. Mais Son entête ne référence désormais plus que 4 couleurs, mieux réparties, et l'image ne semble pas dégradée. Le poids est dorénavant de 2.25 Ko (2299 octets), soit dix fois moins que l'image redimensionnée sans optimisation.

L'image est plus petite, il y'a peu de couleurs, mais c'est plus lourd ?

Peut être vous posez vous la question : Comment se fait il qu'une image plus petite, disposant du même nombre de couleurs ou presque, occupe quand même un espace poids supérieur ?. La réponse à cette question est expliquée dans la partie concernant la position des pixels dans l'image : c'est la position simple ou complexe des pixels les uns par rapport aux autres qui va favoriser ou non le potentiel d'optimisation.

Variables de couleurs similaires

Le paragraphe précédent nous emmène directement à la question du nombre de couleurs présentes dans une image. En effet, chaque couleur dispose d'une entrée et d'un code de couleurs qui est référencé ou codé dans le code PNG. L'exemple sera ici illustré avec une image Paletted, qui va disposer de 235 couleurs :

Exemple de suppression de couleurs similaires
Une image PNG de 235 couleurs Version optimisée
Image de 235 couleurs avec beaucoup de couleurs qui semblent identiques L'image retravaillée, de 18 couleurs, avec des couleurs identiques
Définition : 85 x 115 pixels Définition : 85 x 115 pixels
Optimisation : ScriptPNG Option 2 Optimisation : ScriptPNG Option 2
Compression : Maximale, filtrée Compression : Maximale, filtrée

Palette de couleurs utilisée :

Palette de 325 couleurs pour l'image originale

Palette de couleurs utilisée :

Palette de 18 couleurs pour l'image optimisée
Schéma de la palette - Couleur Noir :
Numéro03: rvb(0,0,1);
Numéro05: rvb(0,1,0);
Numéro06: rvb(0,1,1);
...
Numéro145: rvb(2,1,1);
Numéro146: rvb(2,1,2);
Numéro147: rvb(2,2,0);
...
Schéma de la palette - Couleur Noir :
Numéro18: rvb(0,0,0):
Encodage : Paletted 8 bits/pixel Encodage : Paletted 8 bits/pixel
Poids : 1.77 Ko (1809 octets) Poids : 0.57 Ko (583 octets)

Il est possible de grouper toutes les variables de couleurs similaires en une seule. Il est peu problable que vous puissiez faire une différence entre les couleurs (différentes) qui semblent identiques dans la première palette. Ces couleurs vont être codées et référencées dans l'image sous forme de numéro. Toutes les entrées vont bien évidemment nécessiter un espace poids supplémentaire.

En changeant toutes les variables de couleurs de Noir en une couleur spécifiée (rvb 0,0,0), il est possible de supprimer le codage des différentes couleurs, et leurs entrées.

Position des pixels

Si un logiciel peut optimiser l'image en utilisant des méthodes pré-définies, vous avez également le potentiel de modifier l'image selon l'image, en vue d'augmenter considérablement son potentiel d'optimisation. Ces modifications sont toutes basées par un remplacement réfléchi de variables par d'autres, qui seront restituées de la même manière ; premier exemple :

Images qui semblent identiques, toutes deux compréssées, mais avec un poids différent
Une image PNG Version optimisée
carrés de couleurs la même image, un carré de couleurs
Définition : 221 x 221 pixels Définition : 221 x 221 pixels
Optimisation : ScriptPNG Option 2 Optimisation : ScriptPNG Option 2
Compression : Maximale, filtrée Compression : Maximale, filtrée
Encodage : Paletted 4 bits/pixel Encodage : Paletted 4 bits/pixel
Poids : 8.46 Ko (8668 octets) Poids : 0.21 Ko (213 octets)

A première vue, on a manifestement la même image, la même définition, optimisée toutes deux grâces à l'option 2 du ScriptPNG, sans données de bourrage artificiel (toutes les données sont utiles) et encodée toutes deux de la même manière : Paletted, avec une profondeur de 4 bits/pixel. Pourtant l'image optimisée est manifestement 40 fois moins lourde que la première... alors en définitive, que s'est il passé ici et comment optimiser cette image ?

Peu de variables, mais un poids excessif ...

Dans le cas de ces images, la restitution est quasiment identique ; on peut raisonnablement penser qu'une grande majorité d'entre vous utiliseraient la seconde image, pour son rapport qualité/poids exceptionnel. On peut y distinguer 5 couleurs : le rouge, le vert, le bleu, le gris, et le noir (qui forme le cadre) ; c'est d'ailleurs le nombre de couleurs que l'on retrouve dans l'image optimisée. L'image originale non optimisée en dispose quant à elle de 14 couleurs.

Néanmoins, ce n'est pas tant le nombre de couleurs qui influ aussi significativement sur le poids du PNG ; le rapport que va avoir une couleur par rapport aux autres dans la matrice de l'image va être la cause principale de cette prise de poids excessive. Dans cet exemple, les couleurs sont similaires : on dispose de variables de chaque couleur (plusieurs verts, plusieurs bleus, etc.) mais qui, à l'oeil nu, sont quasiment imperceptibles les unes des autres.

Effectuons un zoom du carré vert restitué par l'image non optimisée, puis par l'image optimisée ; faisons ressortir distinctivement les trois variables de verts utilisées dans l'image non optimisée :

Zoom sur le carré vert des deux images
Zoom sur l'image non optimisée Zoom sur l'image optimisée
les variables forment un gribouillage de verts le vert est une couleur unie

On peut constater les variables dans la première image (non optimisée) que j'ai clairement fait apparaître en changeant les valeurs, ainsi que la seule couleur unie dans la seconde (optimisée). Lorsque un encodeur va rencontrer ces deux portions d'images, il va être évident que la première va être plus difficile à encoder, tandis que la seconde dispose d'une même valeur, répétée plusieurs fois. En représentant vulgairement l'encodage, on obtiendra ceci sur l'image non optimisée :

ligne 1 : 10 pixels rgb(0,126,0) + 22 pixels rgb(0,127,0) + 1 pixel rgb(0,126,0) + (...)
(...)
ligne 61 : 4 pixels rgb(0,126,0) + 30 pixels rgb(0,128,0) + 9 pixels rgb(0,126,0) + (...)
(...)

On obtiendra simplement cela sur l'image optimisée :

ligne 1 à fin : 200 pixels rgb(0,126,0)

En remplaçant les multiples variables similaires dans une image par une seule et même couleur unie, il est donc possible d'obtenir un rapport qualité/poids bien plus intéressant.

Le phénomène du dégradé

Le format PNG dispose de filtres qui lui permettent d'archiver une image selon son contenu ; les données d'une image non compressée avec un dégradé de couleur simple peuvent être stockées de manière très efficace par PNG, ou GIF/JPEG admettra des dégradations ou un surpoids. L'image originale doit cependant être en un format qui ne modifie pas les variables du dégradé (PNG, BMP etc.).

Comme décrit dans l'article « Introduction aux encodages et conversion », il vaut mieux éviter de convertir une image JPEG vers le format PNG. C'est significativement le cas avec une image qui propose des dégradés de couleurs ; les deux images présentées ci-dessous vont parfaitement illustrer la mauvaise appréciation qu'on peut avoir de PNG.

Lorsqu'elles sont restituées dans votre navigateur, vous ne pourrez distinguer qu'avec peine les différences entre ces deux images. La plupart d'entre nous auraient tendance à dire que ces images sont même identiques ; il y'a pourtant une image qui occupe un espace poids bien supérieur à l'autre, et qui de plus, ne restitue pas la teneur en couleur originale :

Deux dégradés de couleurs dont le poids est très différent
Un dégradé de couleur en PNG Le même dégradé, en PNG depuis l'original
de JPEG vers PNG dégradé de couleurs en PNG
Définition : 300 x 300 pixels Définition : 300 x 300 pixels
Optimisation : ScriptPNG Option 2 Optimisation : ScriptPNG Option 2
Compression : Maximale, filtrée Compression : Maximale, filtrée
Encodage : TrueColor 24 bits/pixel Encodage : TrueColor 24 bits/pixel
Représentation vulgaire du codage :
1: rvb(255,0,0);
2: rvb(255,0,1);
3: rvb(255,0,2);
4: rvb(255,0,3);
etc.
Représentation vulgaire du codage :
1: rvb(255,0,0);
2: +1;
3: +1;
4: +1;
etc.
Dégradations de couleurs : Oui Dégradations de couleurs : Non
Poids : 62.2 Ko (63691 octets) 0.73 Ko (751 octets)

Ce phénomène est causé par l'analyse et le codage intelligent des couleurs les unes par rapport aux autres. Dans la première, cela ne peut s'effectuer : le JPEG a modifié l'image et les couleurs de manière importante ; l'image a ensuite été convertie en PNG. Sur la seconde, le PNG exprime son potentiel : les couleurs sont codées selon leur position, car l'image originale n'a pas été modifiée.

Il faut retenir ici qu'un programme d'optimisation, tel qu'il soit, ne peut effectuer un miracle sur n'importe quelle image. Malgré que les deux images ci-dessus soient optimisées avec le ScriptPNG, l'une est toujours 84 fois plus lourde que l'autre. Notez que l'image en surpoids conservera son état, et ne pourra pas être optimisée au même titre qu'une image originale.

Adapter PNG à l'environnement

Le format PNG dispose de plusieurs sous-formats : le PNG Paletted, PNG Paletted + valeurs alpha, PNG TrueColor, TrueColor + valeur bKGD, TrueColor+alpha, GreyScale, GreyScale + valeur bKGD, GreyScale+alpha, etc. Les logiciels grand publics n'arrangent pas la confusion : la plupart d'entre eux proposent de créer des PNG transparents, dit PNG8 ou PNG32 sans préciser de quel format réel vous allez hériter : le PNG obtenu peut se réveler être inadapté pour le Web.

Il vaut donc mieux étudier l'environnement dans lequel le PNG est inséré, et choisir le bon format qui correspond le mieux pour cet environnement précis. Un choix étudié va permettre :

Adapter PNG à l'environnement
PNG + canal alpha PNG Paletted
PNG avec canal alpha PNG réencoder avec enrivonnement
PNG avec canal alpha et arrière plan PNG réencodé s'intègre dans l'environnement
Définition : 107 x 50 pixels Définition : 107 x 47 pixels
Optimisation : ScriptPNG Option 2 Optimisation : ScriptPNG Option 2
Compression : Maximale, filtrée Compression : Maximale, filtrée
Encodage : TrueColor + canal alpha Encodage : Paletted 8 bits/pixel
L'image est mal restituée sur Internet Explorer 6.0 L'image est bien restituée sur Internet Explorer 6.0
Poids : 8.91 Ko (9121 octets) Poids : 1.84 Ko (1884 octets)

Vous pouvez comparer les restitutions ci-dessus avec un navigateur compatible (Opera, FireFox) puis avec Internet Explorer 6 ; sur un navigateur compatible, vous ne constaterez qu'avec peine la différence entre la qualité du TrueColor+alpha et du PNG Paletted. Sur Internet Explorer 6, le TrueColor ne sera pas restitué correctement, tandis que le PNG Paletted ne posera aucun problème. Dans les deux cas, l'image Paletted pèse ici 8 fois moins lourd.

Synthèse de l'article

En synthèse :
  • Une optimisation logicielle ne permet en aucun cas d'obtenir un PNG optimisé. Le potentiel du format est correctement exploité lorsque les critères de profondeur, de quantification, de définition, des couleurs et de la position des pixels par rapport aux autres sont vérifiés.
  • Le choix du type de PNG sera déterminé par l'environnement dans lequel il sera inséré ; il sera plus judicieux dans de nombreux cas de préférer le PNG Paletted au PNG TrueColor+alpha, car il permet d'assurer une meilleure restitution sur le navigateur Internet Explorer 6, et qu'il sera sans aucun doute moins volumineux.

Si vous avez une remarque, une critique constructive, un quelconque point à éclaircir ou enrichir, que vous avez trouvé une erreur, une faute, vous pouvez me contacter à cette adresse.


Haut de page | Par LOUVRIER Cédric | 2004 - 2007 Tous droits réservés.