两个重叠透明图像的组合透明度的公式是什么?

mac*_*nir 2 graphics alpha imaging alphablending

如果我想显示一个统一的半透明图像,然后"淡出"此图像,逐渐将其替换为另一个相同的透明度,同时在过渡期间将组合透明度保持在恒定水平,如何确定透明度绘制图像?

通过反复试验 - 将各种alphas的透明图像相互叠加 - 我想出了下图,显示了一个轴上图像A的透明度和另一个轴上图像B的透明度.'isoalpha'线显示alpha的组合,沿着线一直产生相同的alpha.每条线用于不同的alpha级别,左上角完全透明.

你可以看到我正在寻找的公式不是alphaA + alphaB == alphaTarget的直线转换.

我正在寻找的数学公式是什么?

Alpha交叉淡入淡出图

X轴 - 图像B的α(0-255 lr).Y轴 - 图像A的alpha(向下0-255).

Aln*_*tak 6

透明度倍增.

transparency_new = transparency_a * transparency_b
Run Code Online (Sandbox Code Playgroud)

但是,因为不透明度(alpha)与透明度相反:

1 - opacity_new = (1 - opacity_a) * (1 - opacity_b)
Run Code Online (Sandbox Code Playgroud)

要么:

opacity_new = 1 - (1 - opacity_a) * (1 - opacity_b)
Run Code Online (Sandbox Code Playgroud)

如果使用从0到255而不是0到1.0的alpha运行,则适当缩放

alpha_new = 255 * (1 - (1 - alpha_a / 255) * (1 - alpha_b / 255))
Run Code Online (Sandbox Code Playgroud)

我使用上面的公式和Grapher.app复制了你的图形:

在此输入图像描述