RGBA
# RGBA

RGBA è l'acronimo di Red Green Blue Alpha cioè: rosso, verde, blu e Alfa. Mentre talvolta viene descritto come uno spazio di colori, attualmente è ritenuto semplicemente come un modello di colori RGB con informazioni extra. Il colore è RGB e può essere di qualsiasi spazio di colori RGB, ma un valore alfa integrale inventato da Catmull e Smith tra il 1971 e il 1972 abilita il canale alfa. Il canale è stato chiamato alfa per la lettera greca che nella formula interpolazione lineare classica è: αA + (1-α)B.

Il termine non definisce quale spazio colore RGB viene utilizzato. Inoltre, non indica se i colori sono o meno pre-moltiplicati per il valore alfa e, se lo sono, non indica in quale spazio colore è stata eseguita la pre-moltiplicazione. Ciò significa che sono necessarie più informazioni oltre al semplice "RGBA" per determinare come gestire un'immagine.

In alcuni contesti l'abbreviazione "RGBA" indica un layout di memoria specifico (di seguito denominato RGBA8888), con altri termini come "BGRA" utilizzati per alternative. In altri contesti "RGBA" indica qualsiasi layout.

## Descrizione

Nella computer grafica, i pixel che codificano le informazioni sullo spazio colore RGBA devono essere archiviati nella memoria del computer (o nei file su disco). Nella maggior parte dei casi vengono utilizzati quattro pezzi di memoria adiacenti di uguali dimensioni, uno per ciascun canale, e uno 0 in un canale indica il colore nero o l'alfa trasparente, mentre tutti i bit 1 indica l'alfa bianco o completamente opaco. Il formato di gran lunga più comune è quello di memorizzare 8 bit (un byte) per ciascun canale, ovvero 32 bit per ogni pixel.

L'ordine di questi quattro byte in memoria può essere diverso, il che può creare confusione quando vengono scambiati i dati dell'immagine. Queste codifiche sono spesso indicate dalle quattro lettere in un certo ordine (es. RGBA, ARGB, ecc.). L'interpretazione di questi mnemonici di 4 lettere non è ben stabilita. Esistono due modi tipici per comprendere un mnemonico come "RGBA":

* Nello schema dell'ordine dei byte per "RGBA" si intende un byte R, seguito da un byte G, seguito da un byte B e seguito da un byte A. Questo schema è comunemente usato per descrivere formati di file o protocolli di rete, che sono entrambi orientati ai byte.
* Nello schema dell'ordine delle parole "RGBA" è inteso rappresentare una parola completa a 32 bit, dove R è più significativo di G, che è più significativo di B, che è più significativo di A.

In un sistema big-endian i due schemi sono equivalenti. Questo non è il caso di un sistema little-endian, in cui i due mnemonici sono l'uno inverso dell'altro. Pertanto, per non essere ambigui, è importante indicare quale ordinamento viene utilizzato quando si fa riferimento alla codifica. Questo articolo utilizzerà uno schema che ha una certa popolarità, che consiste nell'aggiungere il suffisso "8888" per indicare se si tratta di 4 unità a 8 bit o "32" se si tratta di un'unità a 32 bit.

Convertitore di rappresentazione RGBA :

| | Little-endian | big-endian |
| - | - | - |
| RGBA8888 | ABGR32 | RGBA32 |
| ARGB32 | BGRA8888 | ARGB8888 |
| RGBA32 | ABGR8888 | RGBA8888 |

### RGBA8888

In OpenGL e Portable Network Graphics (PNG), viene utilizzato l'ordine dei byte RGBA, in cui i colori sono archiviati in memoria in modo tale che R si trovi all'indirizzo più basso, G dopo di esso, B dopo e A per ultimo. Su un'architettura little endian questo equivale a ABGR32.

In molti sistemi, quando ci sono più di 8 bit per canale (come 16 bit o in virgola mobile), i canali vengono memorizzati nell'ordine RGBA, anche se i canali a 8 bit sono memorizzati in un altro ordine.

### ARGB32

I canali sono disposti in memoria in modo tale che un singolo intero senza segno a 32 bit abbia il campione alfa negli 8 bit più alti, seguito dal campione rosso, verde e infine dal campione blu negli 8 bit più bassi:

I valori ARGB sono in genere espressi utilizzando 8 cifre esadecimali, con ciascuna coppia di cifre esadecimali che rappresenta rispettivamente i valori del canale Alfa, Rosso, Verde e Blu. Ad esempio 80FFFF00rappresenta il 50,2% di giallo opaco (non pre-moltiplicato). Il valore esadecimale80, che è 128 in decimale, rappresenta un valore alfa del 50,2% perché 128 è circa il 50,2% del valore massimo di 255 (FF esadecimale); per continuare a decifrare il valore80FFFF00, il primo FFrappresenta il valore massimo che il rosso può avere; il secondoFFè come il precedente ma per il verde; il finale 00rappresenta il valore minimo che il blu può avere. Di conseguenza, rosso + verde produce giallo. Nei casi in cui non viene utilizzata l'alfa, questa può essere abbreviata a 6 cifreRRGGBB, questo è il motivo per cui è stato scelto di inserire l'alfa nei bit superiori. A seconda del contesto, prima delle cifre esadecimali viene anteposto 0xoppure un simbolo numerico (#).

Questo layout è diventato popolare quando è stato introdotto il colore a 24 bit (e RGBA a 32 bit) sui personal computer. All'epoca era molto più veloce e più facile per i programmi manipolare un'unità a 32 bit rispetto a quattro unità a 8 bit.

Sui sistemi little-endian questo è equivalente all'ordine dei byte BGRA. Sui sistemi big-endian, questo è equivalente all'ordine dei byte ARGB.

### RGBA32

In alcuni software originati su macchine big-endian i colori erano memorizzati in 32 bit simili a ARGB32, ma con l'alfa negli 8 bit nella parte inferiore anziché in alto. Ad esempio 808000FFsarebbe Rosso e Verde: 50,2%, Blu:0% e Alfa:100%, un marrone.

