RGBARGBA è 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[1]. 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[2]. DescrizioneNella 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 blocchi 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 che memorizza 8 bit (un byte) per ciascun canale, ovvero 32 bit per ogni pixel[3]. 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"[4]:
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[5]. 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[6][7].
RGBA8888In 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[8][9]. 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[10]. ARGB32I 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[11][12]: 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 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[14]. RGBA32In 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 EsempiCSS3[17]div.box { background-color: rgba(255, 255, 255, 0.5) }
SVG[18]<rect x="10" y="10" width="100" height="100" stroke="blue" fill="purple"
fill-opacity="0.5" stroke-opacity="0.8"/>
Canvas HTML5[19]ctx.fillStyle = 'orange';
ctx.fillStyle = '#FFA500';
ctx.fillStyle = 'rgb(255, 165, 0)';
ctx.fillStyle = 'rgba(255, 165, 0, 1)';
WebGL[20]gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
Note
Voci correlate |
Portal di Ensiklopedia Dunia