从2种颜色计算得到的RGB,一种是透明的

时间:2010-08-17 19:21:33

标签: css math transparency alpha-transparency

我正在寻找转换它们的公式。

我知道转换一般透明度

alpha * new +(1 - alpha)* old

我有:

Color A : RGB( 85, 113, 135 )
Color B : RGB( 43, 169, 225 )

颜色A具有90%的不透明度,并且位于颜色B的顶部,导致

Color C : RGB( 65, 119, 145 )

我的问题是,它如何获得Color C?如果我将Color B替换为另一件事,我该如何获得Color C?

这是另一个例子,相同的基色:

Color A : RGB( 85, 113, 135 )
Color B : RGB( 45, 67, 82 )
--------
Color C : RGB( 65, 109, 131 )

这些是用图像完成的工作示例 - 我现在正在尝试计算剩余的颜色C,以便我可以指定背景颜色。


更新,请参阅接受的答案。上面示例中的red很奇怪 - 接受的答案具有所有颜色的正确公式,我在Photoshop中进行了测试。

1 个答案:

答案 0 :(得分:5)

您的公式似乎正是您的示例中使用的公式,按组件计算并向上舍入。

R_c:= ceiling(R_a * alpha)+ ceiling(R_b *(1-alpha))

G_c := ceiling(G_a * alpha) + ceiling (G_b * (1 - alpha))
B_c := ceiling(B_a * alpha) + ceiling (B_b * (1 - alpha))
但是,奇怪的是,R组件似乎不符合规则。我倾向于想知道为什么。