stringtranslate.com

Modelo de color RGBA

Ejemplo de una imagen RGBA compuesta sobre un fondo de tablero de ajedrez. alfa es 0% en la parte superior y 100% en la parte inferior.

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 qué tan opaco es cada píxel y permite combinar una imagen sobre otras usando 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 utiliza. Tampoco indica si los colores se multiplican previamente por el valor alfa y, si lo están, no indica en qué espacio de color se realizó la multiplicación previa. Esto significa que se necesita más información además de "RGBA" 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), y se utilizan otros términos como "BGRA" para 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 adyacentes 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 diferencia, el formato más común es almacenar 8 bits (un byte ) para cada canal, lo que equivale a 32 bits para cada píxel.

El orden de estos cuatro bytes en la memoria puede variar, lo que puede generar confusión cuando se intercambian datos de imágenes. Estas codificaciones a menudo se indican con 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 una mnemónica como "RGBA":

En un sistema big-endian , los dos esquemas son equivalentes. Este no es el caso de un sistema little-endian , donde las dos mnemónicas son inversas entre sí. Por lo tanto, para no ser ambiguo, es importante indicar qué orden se utiliza 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 se están analizando 4 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 la memoria de modo 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. [1]

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 ú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:

Diseño de muestra en un píxel típico de 32 bpp

Los valores ARGB generalmente se expresan utilizando 8 dígitos hexadecimales , y cada par de dígitos hexadecimales representa los valores del canal Alfa, Rojo, Verde y Azul, respectivamente. Por ejemplo, 80FFFF00representa un 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 seguir descifrando el 80FFFF00valor, el primero FFrepresenta el valor máximo que puede tener el rojo; el segundo FFes como el anterior pero de color verde; el final 00representa el valor mínimo que puede tener el azul (efectivamente, nada de azul). En consecuencia, rojo + verde produce amarillo. En los casos en los que no se utiliza el alfa, este se puede acortar a 6 dígitos RRGGBB, es por eso que se optó por poner el alfa en los bits superiores. Dependiendo del contexto, se coloca 0xun signo numérico (#) [2] 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 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 software originados en máquinas big-endian como Silicon Graphics , los colores se almacenaban en 32 bits similar a ARGB32, pero con el 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 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 raro.

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

Ver también

Referencias

  1. ^ "Especificación de gráficos de red portátiles (PNG) (segunda edición)". www.w3.org . Consultado el 25 de noviembre de 2021 .
  2. ^ Referencia de estructura de color XAML de Microsoft MSDN (XAML/WPF/Silverlight), que incluye #aarrggbbysc# scA,scR,scG,scB

enlaces externos