我正在尝试模拟 Adobe Photoshop 的混合模式 - 变暗。
我理解基本的 Darken 原则:Darken(a,b) = min(a,b)。例如:
Darken( (.2, .3, .8), (.5, .1, .4) ) = (.2, .1, .4) // (r, g, b)
但我有透明度。在 Photoshop 中,变暗的工作方式如下:
Darken( (0, 1, 0, .5), (0, 0, 0, .5) ) = (0, .3, 0, .75) // (r, g, b, a)
黑色上的深绿色是绿色。我知道,输出 alpha 是以经典方式计算的:ao = aa + ab * (1-aa)。你知道其他值是如何计算的吗?
顺便说一句。变暗模式是可交换的。
最佳答案
所以我终于找到了。
在 Darken 模式下,构图与 Normal 模式相同,但如果后 channel 较暗,前后 channel 将翻转。
对于每个 channel : 变暗(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
关于graphics - 颜色混合 - 变暗模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13445623/