从 2 种颜色计算生成的 RGB,其中一种是透明的

发布于 2024-09-15 11:36:22 字数 610 浏览 11 评论 0原文

我正在寻找一个公式来转换它们。

我知道要转换一般透明度,它是

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 )

我的问题是,它如何获得颜色 C ?如果我用颜色 B 代替其他东西,如何得到颜色 C?

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

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

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


更新,请参阅已接受的答案。上面例子中的红色很奇怪——接受的答案有所有颜色的正确公式,我在 Photoshop 中测试了它。

I'm looking for a formula to convert them.

I know to convert a general transparency it is

alpha * new + ( 1 - alpha ) * old

I have:

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

Color A has 90% opacity and is laid on top of Color B, resulting in

Color C : RGB( 65, 119, 145 )

My question is, how does it get Color C? If I substitute Color B for another thing, how do I get Color C?

Here's another example, same base color:

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

Those are working examples done with images -- I'm trying to now calculate the remaining Color C so I can assign a background color.


UPDATE, please see the accepted answer. The red in the above examples is strange -- the accepted answer has the correct formula for all the colors, I tested it in Photoshop.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

入画浅相思 2024-09-22 11:36:22

看来您的公式正是示例中使用的公式,按组件计算并四舍五入。

R_c :=上限(R_a * alpha) +上限(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 组件似乎并不遵循规则。我很想知道为什么。

It appears that your formula is precisely the formula used in your examples, calculated per component, and rounded up.

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))

Strange, though, the R component doesn't appear to follow the rules. I'm inclined to wonder why.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文