
RGBA significa rojo verde azul alfa . Si bien a veces se describe como un espacio de color , en realidad es un modelo de color RGB de tres canales complementado con un cuarto canal alfa . Alfa indica la opacidad de cada píxel y permite combinar una imagen sobre otras mediante composición alfa , con áreas transparentes y suavizado de bordes en las regiones opacas. Cada píxel es un vector 4D .
El término no define qué espacio de color RGB se está utilizando. Tampoco indica si los colores se premultiplican por el valor alfa, y, en caso afirmativo, no especifica en qué espacio de color se realizó dicha premultiplicación. Esto significa que se necesita más información que simplemente "RGBA" para determinar cómo procesar una imagen.
En algunos contextos, la abreviatura "RGBA" se refiere a una disposición de memoria específica (denominada RGBA8888 más adelante), mientras que otros términos como "BGRA" se utilizan para alternativas. En otros contextos, "RGBA" se refiere a cualquier disposición.
Representación
En gráficos por computadora, los píxeles que codifican la información del espacio de color RGBA deben almacenarse en la memoria de la computadora (o en archivos en el disco). Generalmente, se utilizan cuatro bloques de memoria adyacentes de igual tamaño, uno para cada canal. Un 0 en un canal indica color negro o transparencia alfa, mientras que todos los bits en 1 indican blanco o opacidad alfa total. El formato más común consiste en almacenar 8 bits (un byte ) por canal, lo que equivale a 32 bits por píxel.
El orden de estos cuatro bytes en la memoria puede variar, lo que puede generar confusión al intercambiar datos de imagen. Estas codificaciones suelen representarse mediante cuatro letras en un orden determinado (generalmente RGBA). La interpretación de estas siglas de cuatro letras no está del todo clara. Existen dos formas típicas de entender la sigla "RGBA":
- En el esquema de orden de bytes, "RGBA" se entiende como un byte R, seguido de un byte G, seguido de un byte B y seguido de un byte A. Este esquema se usa comúnmente para describir formatos de archivo o protocolos de red, que están orientados a bytes.
- En el esquema de orden de palabras, "RGBA" se entiende que representa una palabra completa de 32 bits, donde R es más significativa que G, que es más significativa que B, que es más significativa que A.
En un sistema big-endian , ambos esquemas son equivalentes. Esto no ocurre en un sistema little-endian , donde los dos mnemónicos son inversos. Por lo tanto, para mayor claridad, es importante especificar el orden utilizado al referirse a la codificación. Este artículo empleará un esquema bastante popular: añadir el sufijo "8888" para indicar cuatro unidades de 8 bits o "32" si se trata de una unidad de 32 bits.
RGBA8888
En OpenGL y Portable Network Graphics (PNG), se utiliza el orden de bytes RGBA, donde los colores se almacenan en memoria de manera que R se encuentra en la dirección más baja, G después de este, B después de este y A al final. En una arquitectura little endian, esto es equivalente a ABGR32. [ 1 ]
En muchos sistemas donde hay más de 8 bits por canal (como 16 bits o punto flotante), los canales se almacenan en orden RGBA, incluso si los canales de 8 bits se almacenan en algún otro orden.
ARGB32
Los canales están organizados en la memoria de tal manera que un único entero sin signo de 32 bits tiene la muestra alfa en los 8 bits más altos, seguida de la muestra roja, la muestra verde y, finalmente, la muestra azul en los 8 bits más bajos:

Los valores ARGB se expresan típicamente usando 8 dígitos hexadecimales , donde cada par de dígitos hexadecimales representa los valores de los canales Alfa, Rojo, Verde y Azul, respectivamente. Por ejemplo, 80FFFF00representa 50.2% de amarillo opaco (no premultiplicado). El 80valor hexadecimal, que es 128 en decimal, representa un valor alfa del 50.2% porque 128 es aproximadamente el 50.2% del valor máximo de 255 (FF hexadecimal); para continuar descifrando el 80FFFF00valor, el primero FFrepresenta el valor máximo que puede tener el rojo; el segundo FFes como el anterior pero para el verde; el último 00representa el valor mínimo que puede tener el azul (efectivamente, sin azul). En consecuencia, rojo + verde produce amarillo. En los casos en que no se usa el alfa, esto se puede acortar a 6 dígitos RRGGBB, por eso se eligió colocar el alfa en los bits superiores. Dependiendo del contexto, se coloca 0xun signo de número (#) [ 2 ] antes de los dígitos hexadecimales.
Esta disposición se popularizó con la introducción del color de 24 bits (y RGBA de 32 bits) en los ordenadores personales. En aquel entonces, era mucho más rápido y sencillo para los programas manipular una unidad de 32 bits que cuatro unidades de 8 bits.
En sistemas little-endian, esto equivale al orden de bytes BGRA. En sistemas big-endian, esto equivale al orden de bytes ARGB.
RGBA32
En algunos programas creados para máquinas big-endian como Silicon Graphics , los colores se almacenaban en 32 bits, de forma similar a ARGB32, pero con el canal alfa en los 8 bits inferiores en lugar de los superiores. Por ejemplo, 808000FFsería Rojo y Verde: 50,2%, Azul: 0% y Alfa: 100%, un marrón. Esto es lo que se obtendría si los datos RGBA8888 se leyeran como palabras en estas máquinas. Se utiliza en Portable Arbitrary Map y en FLTK , pero en general es poco común.

En una máquina little-endian, los bytes se almacenan en la memoria en el orden ABGR.
Véase también
Referencias
Enlaces externos
- Transparencia alfa en la especificación PNG del W3C
- Colores RGBA : página de vista previa con información de implementación en CSS3.info
- Espacio de color