透明度实际上是如何实现的?

Eas*_*onk 4 graphics

给定两个图像 A,BI 想要第三个图像 C,就好像 B 的透明度为 t=0.5 并放置在 A 的顶部。

现实中C是如何计算的以及n如何影响它?我对任何程序或伪代码都不感兴趣,我只想知道基本原理。

我认为 C 的一种方式只不过是 A 和 B 的交替像素。还有什么其他方式?

ang*_*son 6

A 和 B 的每个像素的颜色和可选的透明度根据权重进行组合。

如果透明度为 0.75,则通常将使用 B 中颜色值的 25% 和 A(底层图像)中颜色值的 75%。

基本上,红色、绿色、蓝色和可选的 Alpha 通道均按如下方式计算,然后重新组合以形成一个结果像素。

例子:

A = [1 0 0]  <-- red
B = [0 1 0]  <-- blue
a = 0.75 (which means B is more transparent than it is opaque)

C = [
    0.75 = 1 * 0.75 + 0 * 0.25 (red component)
    0.25 = 0 * 0.75 + 1 * 0.25 (green component)
    0.00 = 0 * 0.75 + 0 * 0.25 (blue component)
] //       A          B
Run Code Online (Sandbox Code Playgroud)

如果图像本身具有 Alpha 通道,则计算会变得更加复杂。