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

Colors 混合两种透明颜色时的alpha值公式,colors,transparency,alpha,blending,Colors,Transparency,Alpha,Blending,假设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) {

假设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
}

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

Photoshop执行以下计算:

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

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

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

通常,当alpha=1时,颜色是不透明的,当alpha=0时,颜色是完全透明的。因此,在50%的基础上加上50%的结果应该是25%,而不是75%。@KennyTM,好的,我将编辑我的帖子,以使用从0到1的浮动,这几乎是我希望的结果。只是,当我在photoshop中将结果与两个图像相比较时,photoshop版本的alpha值似乎稍高一些。如果两个输入都在0..1范围内,
min
是多余的。
float blend(float alphaBelow, float alphaAbove) 
{ 
    return alphaBelow + (1.0 - alphaBelow) * alphaAbove; 
}