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

Ale*_*s G 8 language-agnostic colors rgba

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

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

Nik*_*uhe 19

使用Painter算法时,大多数颜色合成都是使用Porter-Duff "Over"模式完成的:

产生的alpha:

?r = ?a + ?b (1 - ?a)
Run Code Online (Sandbox Code Playgroud)

产生的颜色成分:

Cr = (Ca ?a + Cb ?b (1 - ?a)) / ?r
Run Code Online (Sandbox Code Playgroud)

所以对于你的例子:

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
Run Code Online (Sandbox Code Playgroud)

请参阅有关alpha合成的维基百科文章.