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

Sar*_*rke 3 alphablending colors linear-algebra opacity alpha-transparency

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

有没有办法计算“真实”颜色(100% 不透明度)?

Nay*_*uki 5

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

\n\n

变量:
\n c - 颜色(未知)
\n f - 不透明度(未知)

\n\n

方程:
\n c * f + (1 \xe2\x88\x92 f ) * 255 = 160。(与白色混合)
\n c * f + (1 \xe2\x88\x92 f ) * 0 = 73。(与黑色混合)

\n\n

重新排列得到:
\n c * f \xe2\x88\x92 255 f = \xe2\x88\x9295。
\n c * f = 73。
\n255 f = 168。

\n\n

因此:
\n f = 168/255 \xe2\x89\x88 65.9%。
\n c = 6205/56 \xe2\x89\x88 110.8。

\n\n

计算其他通道,最终颜色为 (111,167,220),不透明度为 66%。

\n