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

Calculate a color with opacity based on it's values over other colors?

例如,我知道颜色超过白色时是#a0c5e8 (160,197,232),超过黑色时是#496e91 (73,110,145)。

有没有办法计算 "real" 颜色(100% 不透明度)?

是的,你可以,通过求解线性方程组。我们以红色通道为例:

变量:
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%。