用于在彼此之上绘制像素的算法(使用alpha)

时间:2012-07-07 21:56:29

标签: algorithm graphics2d

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

3 个答案:

答案 0 :(得分:2)

输出只是目的地和来源的加权和。

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

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

答案 1 :(得分:1)

这完全取决于您想要使用的混合算法:乘法,加法等。例如,添加剂只会将元素添加到一起:

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

乘法混合(显然)乘以RGBA基准(在某些情况下是交叉乘法)。你也可以减去频道,除法或做任何其他花哨的代数数学。无论您选择使用哪种混合方法,alpha通道通常都是附加的 - 除非您有特定原因(即屏蔽)。

答案 2 :(得分:1)

实际上,你也遇到了预乘的alpha vs. well,而不是预乘的alpha。不过,默认值应该是预乘的,所以我会使用它。

公式很简单:

DestinationRGB = ImageRGB+(1-ImageAlpha)*DestinationRGB