Modelo de color RGBA

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Modelo de color RGB con un canal de opacidad
Ejemplo de una imagen RGBA compositió sobre un fondo del tablero de control. alpha es 0% en la parte superior y 100% en la parte inferior.

RGBA significa rojo verde azul alfa. Si bien a veces se lo describe como un espacio de color, en realidad es un modelo de color RGB de tres canales complementado con un cuarto canal alfa. Alpha indica qué tan opaco es cada píxel y permite combinar una imagen sobre otras mediante la composición alfa, con áreas transparentes y suavizado de los bordes de las regiones opacas.

El término no define qué espacio de color RGB se está utilizando. Tampoco indica si los colores están premultiplicados o no por el valor alfa, y si lo están, no indica en qué espacio de color se realizó la premultiplicación. Esto significa más información que solo "RGBA" es necesario para determinar cómo manejar una imagen.

En algunos contextos, la abreviatura "RGBA" significa un diseño de memoria específico (llamado RGBA8888 a continuación), con otros términos como "BGRA" utilizado para las alternativas. En otros contextos, "RGBA" significa cualquier diseño.

Representación

En los 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). En la mayoría de los casos, se utilizan cuatro piezas de memoria adyacente del mismo tamaño, una para cada canal, y un 0 en un canal indica color negro o alfa transparente, mientras que todos los bits 1 indican alfa blanco o completamente opaco. Con mucho, el formato más común es almacenar 8 bits (un byte) para cada canal, que son 32 bits para cada píxel.

El orden de estos cuatro bytes en la memoria puede diferir, lo que puede generar confusión cuando se intercambian datos de imagen. Estas codificaciones a menudo se indican con las cuatro letras en algún orden (por ejemplo, RGBA, ARGB, etc.). La interpretación de estos mnemotécnicos de 4 letras no está bien establecida. Hay dos formas típicas de entender un mnemotécnico como "RGBA":

  • En el esquema de byte-order, "RGBA" se entiende por un byte R, seguido de un byte G, seguido de un byte B, seguido de un byte A. Este esquema se utiliza comúnmente para describir formatos de archivo o protocolos de red, que están ambos orientados por byte.
  • En el esquema de orden de palabras, se entiende que "RGBA" representa una palabra completa de 32 bits, donde R es más significativo que G, que es más significativo que B, que es más significativo que A.

En un sistema big-endian, los dos esquemas son equivalentes. Este no es el caso de un sistema little-endian, donde los dos mnemotécnicos son inversos entre sí. Por lo tanto, para ser inequívoco, es importante indicar qué ordenamiento se usa cuando se hace referencia a la codificación. Este artículo utilizará un esquema que tiene cierta popularidad, que consiste en agregar el sufijo "8888" para indicar si 4 unidades de 8 bits o "32" si se habla de una unidad de 32 bits.

RGBA representation convertidor
Little-endianBig-endian
RGBA88 ABGR32 RGBA32
ARGB32 BGRA8888 ARGB88
RGBA32 ABGR8888 RGBA88

RGBA8888

En OpenGL y Portable Network Graphics (PNG), se usa el orden de bytes RGBA, donde los colores se almacenan en la memoria de manera que R está en la dirección más baja, G después, B después y A al final. En una arquitectura Little Endian esto es equivalente a ABGR32.

En muchos sistemas, cuando 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 solo entero de 32 bits sin signo tiene la muestra alfa en los 8 bits más altos, seguida por la muestra roja, la muestra verde y finalmente la muestra azul en los 8 bits más bajos:

Sample layout in a typical 32bpp pixel

Los valores ARGB generalmente se expresan con 8 dígitos hexadecimales, y cada par de dígitos hexadecimales representa los valores del canal alfa, rojo, verde y azul, respectivamente. Por ejemplo, 80FFFF00 representa un 50,2 % de amarillo opaco (no premultiplicado). El valor hexadecimal 80, 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 seguir descifrando el valor 80FFFF00, el primer FF representa el valor máximo que puede tener el rojo; el segundo FF es como el anterior pero para verde; el 00 final representa 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 use el alfa, se puede acortar a 6 dígitos RRGGBB, por eso se eligió colocar el alfa en los bits superiores. Dependiendo del contexto, se coloca un 0x o un signo de número (#) antes de los dígitos hexadecimales.

Este diseño se hizo popular cuando se introdujo el color de 24 bits (y RGBA de 32 bits) en las computadoras personales. En ese momento, era mucho más rápido y fácil para los programas manipular una unidad de 32 bits que cuatro unidades de 8 bits.

En sistemas little-endian, esto es equivalente al orden de bytes BGRA. En sistemas big-endian, esto es equivalente al orden de bytes ARGB.

RGBA32

En algún software que se originó en máquinas big-endian como Silicon Graphics, los colores se almacenaron en 32 bits de manera similar a ARGB32, pero con el alfa en los 8 bits inferiores en lugar de en la parte superior. Por ejemplo, 808000FF sería rojo y verde: 50,2 %, azul: 0 % y alfa: 100 %, un marrón. Esto es lo que obtendría si los datos RGBA8888 se leyeran como palabras en estas máquinas. Se usa en Portable Arbitrary Map y en FLTK, pero en general es raro.

RGBA pixel layout

Los bytes se almacenan en la memoria de una máquina little-endian en el orden ABGR.

Contenido relacionado

Transporte en las Islas Feroe

Las Islas Feroe cuentan con un sistema de transporte interno basado en carreteras, transbordadores y helicópteros. A partir de la década de 1970, la...

Sistema de señalización de acceso digital 2

Digital Access Signaling System 2 es un protocolo obsoleto definido por British Telecom para enlaces digitales a PSTN basados en ISDN. Aunque todavía está...

UNIR

BIND es un paquete de software para interactuar con el Sistema de nombres de dominio realiza las dos funciones principales del servidor DNS, actuando como un...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save