根据其他颜色值计算具有透明度的颜色?

3
例如,当在白色背景上时,我知道颜色为#a0c5e8 (160,197,232),而当在黑色背景上时,它是#496e91 (73,110,145)。
有没有一种方法可以计算“真实”的颜色(100%不透明度)?
1个回答

5
是的,您可以通过解一组线性方程来实现。让我们以红色通道为例:
变量: c - 颜色(未知) f - 不透明度(未知)
方程式: c * f + (1 - f) * 255 = 160。(与白色混合) c * f + (1 - f) * 0 = 73。(与黑色混合)
重新排列得到: c * f - 255 * f = -95。 c * f = 73。 255 * f = 168。
因此: f = 168/255 ≈ 65.9%。 c = 6205/56 ≈ 110.8。
计算其他通道后,您最终的颜色是(111,167,220),不透明度为66%。

1
太棒了!数学计算正确,视觉测试也通过了!最终颜色为rgba(111, 167, 220, 0.659) - undefined
我正在尝试在我正在处理的项目中使用这个方程。但是我无论如何都无法弄清楚你是如何得到6205和56的? - undefined
@milky_jay 一旦你建立了方程式,你可以通过任何标准的线性系统求解器来运行它们。这是高中线性代数。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接