2009-12-22 9 views
11

¿Cómo puedo mezclar dos píxeles ARGB?¿Cómo mezclar dos píxeles ARGB?

Ejemplo

Source: en.wikipedia.org/wiki/Alpha_compositing#mediaviewer/File:Alpha_compositing.svg

Aquí A es (rojo con alfa) y B es (azul con Alpha).

+0

Esto podría dar algunas pistas http://stackoverflow.com/questions/1892020/mixing-two-rgb-color-vectors-to-get-resultant aunque es RGB y no ARGB, el concepto es similar. –

+1

Hola, ¿por qué FA = 19? Además, ¿qué tipo de 'mezcla' quieres decir? ¿Algo como esto? http://lectureonline.cl.msu.edu/~mmp/applist/RGBColor/c.htm – keyboardP

+0

@ o.k.w Es totalmente diferente. – SunnyShah

Respuesta

30

tomadas del mismo artículo de Wikipedia, donde obtuvo la imagen:

C_o = C_a \alpha_a + C_b \alpha_b \left(1 - \alpha_a\right)

se traduce en valores que van de 0 a 255:

rOut = (rA * aA/255) + (rB * aB * (255 - aA)/(255*255)) 
gOut = (gA * aA/255) + (gB * aB * (255 - aA)/(255*255)) 
bOut = (bA * aA/255) + (bB * aB * (255 - aA)/(255*255)) 
aOut = aA + (aB * (255 - aA)/255) 
2

Parece que esto es lo que quiere: http://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending, pero estoy un poco confundido por su notación ya que la wikipedia dice que los valores de argb deberían oscilar entre 0.0 y 1.0. Entonces, no creo que esta fórmula te dé FA = 19. ¿Puedes aclarar?

Editar: ahora que sacó el negocio de FA = 19, me inclino a ir con esa fórmula.

+0

También puede usar valores de 0 a 255 para los componentes RGB; si necesita usar los valores para calcular algo, entonces probablemente sea mejor usar valores entre 0 y 255. Sin embargo, la fórmula se puede cambiar para trabajar con valores entre 0 y 255. – kiamlaluno

+0

Creo que la fórmula espera que cada valor sea un porcentaje, por lo que podría usar 0.0-1.0 para la fórmula y luego multiplicar por 255 después. – danben

+0

+1 para Alpha Blending. Este parece ser el método requerido. – keyboardP