CSS-IG Optimisation Web, format PNG

Transparence du format PNG

Le format PNG ne propose pas qu'un seul type de transparence. Il propose plusieurs méthodes, selon les formats de l'image PNG, qui seront présentés et illustrés par des exemples :

La transparence selon le format PNG
Type de transparence
PalettedTransparence Paletted (binaire), Transparence Paletted (opacités variables)
GrayScaleTransparence Chunk tRNS
GrayScale+alphaTransparence et / ou transcludité (opacité) Canal Alpha
TrueColorTransparence Chunk tRNS
TrueColor+alphaTransparence et / ou transcludité (opacité) Canal Alpha

Transparence Paletted (binaire)

Le PNG Paletted peut rendre une couleur de l'image transparente en associant le chunk tRNS à un index de la palette. La couleur choisie est alors totalement transparente (opacité de 0) et laisse apparaître l'arrière plan sur laquelle est posée :

Transparence Paletted (binaire)
PNG sans transparenceTransparence Paletted - 1 couleurTransparence Paletted - x couleurs
PNG non transparent, 4 couleurs bleu rouge vert jaunePNG 1 transparent, 4 couleurs bleu rouge vert jaunePNG x transparents, 4 couleurs bleu rouge vert jaune
AucuneCouleur jaune transparenteCouleur jaune et rouge transparentes

Ce type de PNG est, au même titre que GIF, compatible sur la très grande majorité des navigateurs Web, Internet Explorer 6.0 inclu.

Plusieurs couleurs transparentes ?

Si vous destinez un PNG Paletted à plusieurs couleurs transparentes, ne conservez pas plusieurs couleurs transparentes : colorisez la valeur dans l'index avec la même variable. Cela permettra d'éviter l'encodage d'une couleur dans le chunk PLTE, et supprimera les valeurs d'opacités dans tRNS.

Transparence Paletted (opacités variables)

Le PNG Paletted peut attribuer une valeur d'opacité entre 0 et 255 (0 étant la transparence paletted dite binaire, décrite ci-dessus) à une ou plusieurs couleurs de l'index. Cela permet d'obtenir des nuances graduelles.

Transparence Paletted (opacités variables)
PNG sans transparenceTransparence Paletted avec opacités variables
PNG Paletted non transparent, 4 couleurs bleu rouge vert jaunePNG Paletted 1 transparent, 4 couleurs bleu rouge vert jaune
AucuneCouleurs différentes avec variables d'opacités
PalettedPaletted
11 couleurs11 couleurs

Les images utilisent respectivement 11 couleurs dans cette image. Chaque couleur est presque identique, avec de très légères nuances quasi-imperceptibles. Cela est nécessaire pour attribuer une valeur d'opacité unique, à une couleur unique.

Transparence GrayScale - tRNS

Le format PNG GrayScale permet l'ajout de l'attribut tRNS ; ce dernier va pouvoir spécifier une valeur sur un des niveaux de gris de l'image, afin de rendre la couleur transparente à l'affichage.

Transparence GrayScale et tRNS
PNG sans transparenceTransparence GrayScale
PNG GrayScale non transparent, rond noirPNG GrayScale transparent, rond noir
AucuneCouleur blanche transparente
GrayScaleGrayScale
22

Le ScriptPNG (ou autre outils d'optimisation) peuvent abandonner l'encodage GrayScale lorsque celui est associé à l'attribut tRNS, pour le convertir en Paletted binaire. Cela permet un meilleur support du PNG obtenu, et aucune économie de poids.

Transparence GrayScale+alpha

Le PNG GrayScale+alpha ajoute un canal alpha 8 bits au canal des niveaux de gris déjà existant. Il permet d'appliquer un niveau de filtre, qui permet d'obtenir un effet anti-aliasing (effet anti-escalier des pixels) ainsi qu'un niveau de translucidité variable.

Transparence GrayScale+alpha
Transparence et anti-aliasingTransparence, anti-aliasing, translucidité
PNG GrayScale+alpha anti-aliasingPNG GrayScale+alpha anti-aliasing et transclucidité
GrayScale+alphaGrayScale+alpha

Transparence TrueColor - tRNS

Le format PNG TrueColor permet l'ajout de l'attribut tRNS dans l'entête du PNG : une couleur, spécifiée par la syntaxe rgb (x,x,x) sera restituée transparente dans le navigateur compatible.

Transparence TrueColor et tRNS
PNG sans transparenceTransparence TrueColor
PNG TrueColor fond noirPNG TrueColor sans fond noir
AucuneCouleur noire transparente
TrueColorTrueColor

Transparence TrueColor+alpha

Le PNG TrueColor+alpha ajoute un canal alpha 8 bits aux trois canaux RVB (Rouge Vert Bleu) existants. Au même titre qu'un GrayScale+alpha, cela permet d'appliquer un niveau de filtre, qui permet d'obtenir un effet anti-aliasing ainsi qu'un niveau de translucidité variable.

Transparence TrueColor+alpha
Transparence et anti-aliasingTransparence, anti-aliasing, translucidité
PNG TrueColor+alpha anti-aliasingPNG TrueColor+alpha anti-aliasing et transclucidité
TrueColor+alphaTrueColor+alpha

Support dans les navigateurs

Support dans les navigateurs
NavigateursIE 4 à IE 6.0IE 7.0, 8.0FireFoxOpera > 3.51Konqueror > 3.6
Paletted (binaire)OuiOuiOuiOuiOui
Paletted (opacités variables)NonOuiOuiOuiOui
Transparence Chunk tRNSNonOuiOuiOuiOui
Canal AlphaNonOuiOuiOuiOui

Améliorer le support de la transparence dans IE

Le support de la transparence du PNG dans les navigateurs peut être amélioré en utilisant différentes méthodes. Les meilleures d'entre elles consistent à utiliser seulement le potentiel du PNG, sans hacks pour les navigateurs, comme alphaimageloader ou autre.

Efficacité de la quantification et transparence
Logo K-Notify en PNG-32Logo K-Notify en PNG-8
PNG-32PNG-8
6991 couleurs256 couleurs
Compatibilité IE7 et supérieurCompatibilité IE4 et supérieur
30381 octets9287 octets

Dans cet exemple, seul le potentiel de PNG est utilisé : cela permet un gain considérable sur certaines ressources, comme expliqué dans la brève dédiée à ce sujet.

Complément d'article

Améliorez la transparence de vos PNG

Des solutions pour contourner le problème de la transparence sans bidouillages.

css-ig.net - Contacter l'auteur