从 2 种颜色计算生成的 RGB,其中一种是透明的
我正在寻找一个公式来转换它们。
我知道要转换一般透明度,它是
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看来您的公式正是示例中使用的公式,按组件计算并四舍五入。
R_c :=上限(R_a * alpha) +上限(R_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))Strange, though, the R component doesn't appear to follow the rules. I'm inclined to wonder why.