混合两种透明颜色时的alpha值公式

时间:2010-09-07 12:51:06

标签: colors transparency alpha blending

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

如果它们相互叠加,产生的透明度为0.75,对吗?

如果它们的alpha值为0.25,那么结果大约为0.5,对吗?

如果它们的α值为0.9,那么结果将是0.97左右,对吗?

你怎么能得到这些数字?

换句话说,我正在寻找一个从另外两个alpha值获得结果alpha值的函数。

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

3 个答案:

答案 0 :(得分:7)

float blend(float alphaBelow, float alphaAbove)
{
    return alphaBelow + alphaAbove - alphaBelow * alphaAbove;
}

此函数假设两个参数均为0..1,其中0表示完全透明,1表示完全不透明。

答案 1 :(得分:7)

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

float blend(float alphaBelow, float alphaAbove) 
{ 
    return alphaBelow + (1.0 - alphaBelow) * alphaAbove; 
} 

答案 2 :(得分:4)

Photoshop执行以下计算:

float blend(float alphaBelow, float alphaAbove)
{
    return min(1,alphaBelow+(1-alphaBelow)*alphaAbove);
}