RGBA signifie rouge vert bleu alpha . Bien qu'il soit parfois décrit comme un espace colorimétrique , il s'agit en réalité d'un modèle de couleur RGB à trois canaux , complété par un quatrième canal alpha . L'alpha indique l'opacité de chaque pixel et permet de superposer des images grâce à la composition alpha , avec des zones transparentes et un lissage des contours des régions opaques. Chaque pixel est un vecteur à quatre dimensions .
Ce terme ne précise pas l'espace colorimétrique RVB utilisé. Il n'indique pas non plus si les couleurs sont prémultipliées par la valeur alpha, et le cas échéant, il ne précise pas dans quel espace colorimétrique cette prémultiplication a été effectuée. Par conséquent, la simple mention « RGBA » ne suffit pas à déterminer comment traiter une image.
Dans certains contextes, l'abréviation « RGBA » désigne une configuration mémoire spécifique (appelée RGBA8888 ci-dessous), tandis que d'autres termes tels que « BGRA » sont utilisés pour des alternatives. Dans d'autres contextes, « RGBA » désigne n'importe quelle configuration.
mémoire (ou dans des fichiers sur disque). Généralement, on utilise quatre blocs de mémoire contigus de taille égale, un pour chaque canal. Un 0 dans un canal indique le noir (transparence), tandis que tous les bits à 1 indiquent le blanc (opacité totale). Le format le plus courant consiste à stocker 8 bits (un octet ) par canal, soit 32 bits par pixel.L' ordre de ces quatre octets en mémoire peut varier, ce qui peut engendrer des confusions lors de l'échange de données d'image. Ces encodages sont souvent désignés par les quatre lettres dans un ordre précis (le plus souvent RGBA). L'interprétation de ces mnémoniques à 4 lettres n'est pas clairement établie. Il existe deux manières typiques de comprendre le mnémonique « RGBA » :
- Dans le schéma d'ordre des octets, « RGBA » signifie un octet R, suivi d'un octet G, suivi d'un octet B, et enfin d'un octet A. Ce schéma est couramment utilisé pour décrire les formats de fichiers ou les protocoles réseau, qui sont tous deux orientés octets.
- Dans le schéma d'ordre des mots, « RGBA » est considéré comme représentant un mot complet de 32 bits, où R est plus significatif que G, qui est plus significatif que B, qui est plus significatif que A.
Dans un système big-endian , les deux notations sont équivalentes. Ce n'est pas le cas pour un système little-endian , où les deux notations sont inversées. Par conséquent, pour éviter toute ambiguïté, il est important de préciser l'ordre utilisé lors de la désignation de l'encodage. Cet article utilisera une notation courante : ajouter le suffixe « 8888 » pour indiquer qu'il s'agit de quatre unités de 8 bits, ou « 32 » pour une seule unité de 32 bits.
| Petit-boutiste | Big-endian | |
|---|---|---|
| RGBA8888 | ABGR32 | RGBA32 |
| ARGB32 | BGRA8888 | ARGB8888 |
| RGBA32 | ABGR8888 | RGBA8888 |
RGBA8888
En OpenGL et en PNG ( Portable Network Graphics ), l'ordre d'octets RGBA est utilisé, où les couleurs sont stockées en mémoire de telle sorte que R soit à l'adresse la plus basse, G ensuite, B encore après, et A en dernier. Sur une architecture little-endian, cela équivaut à ABGR32.
Dans de nombreux systèmes où il y a plus de 8 bits par canal (comme 16 bits ou à virgule flottante), les canaux sont stockés dans l'ordre RGBA, même si les canaux 8 bits sont stockés dans un autre ordre.
ARGB32
Les canaux sont organisés en mémoire de telle sorte qu'un seul entier non signé de 32 bits ait l'échantillon alpha dans les 8 bits de poids fort, suivi de l'échantillon rouge, de l'échantillon vert et enfin de l'échantillon bleu dans les 8 bits de poids faible :

Les valeurs ARGB sont généralement exprimées à l'aide de 8 chiffres hexadécimaux , chaque paire de chiffres représentant respectivement les valeurs des canaux Alpha, Rouge, Vert et Bleu. Par exemple, 80FFFF0050,2 % représente un jaune opaque (non prémultiplié). La 80valeur hexadécimale, soit 128 en décimal, représente une valeur alpha de 50,2 %, car 128 est approximativement égal à 50,2 % de la valeur maximale de 255 (FF en hexadécimal). Pour continuer à déchiffrer la 80FFFF00valeur, le premier chiffre FFreprésente la valeur maximale du rouge ; le deuxième FF, de même, mais pour le vert ; le dernier 00, la valeur minimale du bleu (soit l'absence de bleu). Par conséquent, rouge + vert donne du jaune. Lorsque le canal alpha n'est pas utilisé, on peut réduire la valeur à 6 chiffresRRGGBB ; c'est pourquoi il a été choisi de placer les bits de poids fort. Selon le contexte, 0xun symbole dièse (#) est placé avant les chiffres hexadécimaux.
Cette configuration s'est popularisée avec l'introduction de la couleur 24 bits (et du RGBA 32 bits) sur les ordinateurs personnels. À l'époque, il était beaucoup plus rapide et facile pour les programmes de manipuler une seule unité 32 bits que quatre unités 8 bits.
Sur les systèmes little-endian, cela équivaut à l'ordre d'octets BGRA. Sur les systèmes big-endian, cela équivaut à l'ordre d'octets ARGB.
RGBA32
808000FFon obtenait : Rouge et Vert : 50,2 %, Bleu : 0 % et Alpha : 100 %, soit du marron. C’est le résultat obtenu si des données RGBA8888 étaient lues comme des mots sur ces machines. Ce format est utilisé dans Portable Arbitrary Map et FLTK , mais reste rare.
Les octets sont stockés en mémoire sur une machine little-endian dans l'ordre ABGR.