2012-11-18 53 views
0

我想模擬Adobe Photoshop的混合模式 - 變暗。我知道基本的Darken原理:變暗(a,b)= min(a,b)。例如:顏色混合 - 變暗模式

Darken((.2, .3, .8), (.5, .1, .4)) = (.2, .1, .4) // (r, g, b) 

但我有透明度。在Photoshop中,Darken以這種方式工作:

Darken((0, 1, 0, .5), (0, 0, 0, .5)) = (0, .3, 0, .75) // (r, g, b, a) 

黑色變綠變綠。我看到,輸出alpha是以經典方式計算的:ao = aa + ab *(1-aa)。你知道其他值是如何計算的嗎?

順便說一句。變暗模式是可交換的。

回答

0

呃,實際上,它有一點牽扯。還有其他類似的問題在這裏回答。用最好的一個可能是恰如其名:

Algorithm for Additive Color Mixing for RGB Values

+0

他們正在談論「正常」混合模式,不變暗。我一直在尋找類似的問題,但我找不到任何類似的問題。 –

+0

你可以將你所選擇的顏色與白色相混合變亮,黑色變黑。 alpha通道可以控制您想要的結果顏色的亮度或深度。 –

+0

但我需要透明度,就像在Photoshop中一樣。 –

0

所以最後我發現了這件事。

在變暗模式下,合成與正常模式下的合成相同,但如果反向通道較暗,則前後通道會翻轉。

對於每個通道: 變暗(a,b)= a < b?標準(a,b):標準(b,a);

所以在我的上面例子中,綠色和alpha:

Darken((1, .5), (0, .5)) = Norm((0, .5), (1, .5)) 
alpha = (.5 + .5*(1-.5)) = .75 
green = (0*.5 + 1*.5*(1-.5))/.75 = (0 + .25)/.75 = 0.333333