11

假设 alpha 为 1 表示完全不透明,0 表示完全透明。假设我有两个黑色图像,透明度为 50%(alpha = 0.5)。

如果它们彼此叠放,则得到的透明度为 0.75,对吗?

如果他们的 alpha 为 0.25 ,结果将在 0.5 左右,对吧?

如果他们的 alpha 为 0.9 ,结果将在 0.97 左右,对吧?

你怎么能得到这些数字?

换句话说,我正在寻找一个从其他两个 alpha 值获取结果 alpha 值的函数。

float alpha = f(float alphaBelow, float alphaAbove)
{
     //TODO implement
}
4

3 回答 3

8

这个答案在数学上与Jason 的答案相同,但这是您可以在参考资料中找到的实际公式。

float blend(float alphaBelow, float alphaAbove) 
{ 
    return alphaBelow + (1.0 - alphaBelow) * alphaAbove; 
} 
于 2010-09-07T18:20:58.690 回答
7
float blend(float alphaBelow, float alphaAbove)
{
    return alphaBelow + alphaAbove - alphaBelow * alphaAbove;
}

此函数假定两个参数都是 0..1,其中 0 是完全透明的,1 是完全不透明的。

于 2010-09-07T12:53:36.237 回答
4

Photoshop 进行以下计算:

float blend(float alphaBelow, float alphaAbove)
{
    return min(1,alphaBelow+(1-alphaBelow)*alphaAbove);
}
于 2010-09-07T18:12:45.170 回答