2009-12-22 89 views
11

如何混合兩個ARGB像素?如何混合兩個ARGB像素?

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

這裏A是(紅色使用Alpha)且B是(藍色使用Alpha)。

+0

這可能給你一些線索HTTP:/ /stackoverflow.com/questions/1892020/mixing-two-rgb-color-vectors-to-get-resultant儘管它是RGB而不是ARGB,但它的概念很相似。 – 2009-12-22 04:03:59

+1

嗨,爲什麼FA = 19?另外,你的意思是什麼類型的「混合」?像這樣? http://lectureonline.cl.msu.edu/~mmp/applist/RGBColor/c.htm – keyboardP 2009-12-22 04:04:44

+0

@ o.k.w它完全不同。 – SunnyShah 2009-12-22 04:06:31

回答

30

來自同一個維基百科的文章,你得到了圖片摘自:

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

翻譯成其數值範圍從0到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

看起來好像這就是你想要的:http://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending,但是我對你的符號有點困惑,因爲維基百科認爲argb的值應該在0.0到1.0之間。所以我不認爲這個公式會給你FA = 19。你能澄清嗎?

編輯:現在你已經拿出了關於FA = 19的生意,我傾向於遵循這個公式。

+0

您也可以使用0到255之間的值作爲RGB分量;如果您需要使用這些值來計算某些內容,那麼最好使用0到255之間的值。但是,可以更改該公式以使用介於0和255之間的值。 – kiamlaluno 2009-12-22 04:13:47

+0

我認爲公式預計每個值都是一個百分比,所以你可以使用公式0.0-1.0,然後乘以255。 – danben 2009-12-22 04:17:12

+0

適用於Alpha混合的+1。這似乎是所需的方法。 – keyboardP 2009-12-22 04:21:51