通过组合两种颜色确定接收的RGBA颜色

时间:2012-05-28 09:01:35

标签: language-agnostic colors rgba

我有两种颜色定义为RGBA(在我的具体示例中,其中一个是[白色,带有α0.55]和[57,40,28带有α0.25]。第二个颜色被绘制在第一个上(即带有alpha的白色是背景,第二种颜色用于绘图)。我怎样才能弄清楚组合的RGBA颜色是什么?我需要一次性完成 - 所以任何工具都很好(例如我很高兴在Photoshop中画出一些东西,看看会发生什么。

我有几套要结合,但不是太多。有什么指针吗?感谢。

1 个答案:

答案 0 :(得分:18)

使用Painter's algorithm时,大多数颜色合成都是使用Porter-Duff“过度”模式完成的:

产生的alpha:

αr = αa + αb (1 - αa)

产生的颜色成分:

Cr = (Ca αa + Cb αb (1 - αa)) / αr

所以对你的例子来说:

alpha = 0.25 + 0.85 * (1 - 0.25)                        = 0.8875

red   = (57 * 0.25 + 255 * 0.85 * (1 - 0.25)) / 0.8875  = 199.2
green = (40 * 0.25 + 255 * 0.85 * (1 - 0.25)) / 0.8875  = 194.4
blue  = (28 * 0.25 + 255 * 0.85 * (1 - 0.25)) / 0.8875  = 191.1

请参阅有关alpha合成的wikipedia article