Ho il valore del colore RGB e il valore alfa. Come posso ottenere un nuovo valore RGB assumendo che io abbia il backgound bianco e l'alpha sia applicato?Simulare la trasparenza dei colori
8
A
risposta
10
La formula da applicare a ciascuno dei canali di colore è la seguente:
cr = cf * af + cb * ab * (1 - af)
dove cr è il colore risultante del pixel, cf è il colore di primo piano, cb la colore di sfondo, af alfa di primo piano e ab sfondo alfa.
noti che spesso valori del colore vengono memorizzati già premoltiplicati da alfa nel qual caso la formula si semplifica in
cr = cf + cb * (1 - af)
Vedi anche alpha composing.
Si supponga che ho colore rosso (ff0000) con alpha 0.5, e lo sfondo è bianco. Cercando di ottenere il colore del risultato: ff0000 * 0.5 + ffffff * 0.5 = ff7fff, ma questo non è quello che mi aspetto ... http://www.colorhexa.com/ff7fff Cosa sto facendo di sbagliato? –
applicare la formula per ogni singolo colore (rosso, verde, blu) –
@Aaron Digulla, grazie, io sono distratto :) –