1

我正在寻找在目标像素之上绘制源像素时用于计算输出像素值的算法。当源像素没有 alpha 时,显然我可以将输出像素设置为等于源像素。当源有 alpha 时怎么办?如何计算新的 alpha 和 RGB 值?

4

3 回答 3

2

输出只是目标和源的加权和。

output = alpha * source + (1 - alpha) * destination

对三个 RGB 通道中的每一个都执行此操作。

于 2012-07-07T22:06:12.080 回答
1

这完全取决于您要使用哪种混合算法:乘法、加法等。例如,加法只会将元素相加:

RGBA(1, 2, 3, 4) + RGBA(5, 6, 7, 8) = RGBA(6, 8, 10, 12)

乘法混合(显然)乘以(在某些情况下交叉乘)RGBA 基准。您还可以减去通道、除以或进行任何其他花哨的代数数学运算。无论您选择实施哪种混合方法,Alpha 通道通常都是附加的——除非您有特定的理由不这样做(即掩蔽)。

于 2012-07-07T22:03:05.097 回答
1

实际上,您还遇到了预乘 alpha 与非预乘 alpha。不过,默认值应该是预乘的,所以我将使用它。

公式很简单:

DestinationRGB = ImageRGB+(1-ImageAlpha)*DestinationRGB
于 2012-07-07T22:09:58.213 回答