Colors 计算RGBA以匹配RGB颜色

Colors 计算RGBA以匹配RGB颜色,colors,Colors,如果我有RGB颜色,100%不透明度 我希望相同的颜色(或接近它)有一个透明的alpha通道。我将在白色背景上绘制透明颜色 如何计算RGBA颜色 我想我要问的是。你的意思是你想要最大透明度的RGBA颜色,当在白色背景上绘制时,会给出原始RGB颜色 设R0、G0和B0为原始颜色的分量,每个分量的范围为0.0到1.0,设R、G、B和A为新RGBA颜色的分量(A=1表示100%不透明度)。我们知道颜色必须满足: R0=A·R+(1)− A) G0=A·G+(1)− A) B0=A·B+(1)− (

如果我有RGB颜色,100%不透明度

我希望相同的颜色(或接近它)有一个透明的alpha通道。我将在白色背景上绘制透明颜色

如何计算RGBA颜色


我想我要问的是。

你的意思是你想要最大透明度的RGBA颜色,当在白色背景上绘制时,会给出原始RGB颜色

设R0、G0和B0为原始颜色的分量,每个分量的范围为0.0到1.0,设R、G、B和A为新RGBA颜色的分量(A=1表示100%不透明度)。我们知道颜色必须满足:

R0=A·R+(1)− A)
G0=A·G+(1)− A)
B0=A·B+(1)− (A)

如果我们知道A,我们可以很容易地解出R,G和B:

R=(R0− 1+A)/A=1− (1 − R0)/A
G=(G0− 1+A)/A=1− (1 − G0)/A
B=(B0− 1+A)/A=1− (1 − B0)/A

因为我们需要R≥ 0,G≥ 0和B≥ 0,则表示1− R0≥ A、 一,− G0≥ A和1− B0≥ A、 因此,A的最小可能值为:

A=最大值(1− R0,1− G0,1− B0)=1− 最小值(R0、G0、B0)

因此,我们想要的颜色是:

A=1− 最小值(R0,G0,B0)
R=1− (1 − R0)/A
G=1− (1 − G0)/A
B=1− (1 − B0)/A


注:对于黑色背景,同样的公式会更简单:

A=最大值(R0,G0,B0)
R=R0/A
G=G0/A
B=B0/A


Pps。为了澄清,以上所有公式都适用于非预乘RGBA颜色。对于预乘alpha,只需将上面计算的R、G和B乘以A,得出:

R=A·(1)− (1 − R0)/A)=R0− (1 − A)
G=A·(1)− (1 − G0)/A)=G0− (1 − A)
B=A·(1)− (1 − B0)/A)=B0− (1 − (A)


(或者,对于黑色背景,只需R=R0、G=G0和B=B0即可。)

谢谢!这就解决了max alpha的问题。。。有一个最小α值的公式吗(还有,幸运的是,介于两者之间的范围)?@jedirikb:嗯。。。上面给出的alpha值是最小值。最大值为A=1,R=R0,G=G0,B=B0。(是的,您可以在这些值之间进行插值:只需选择任何有效的alpha值并使用上面的公式即可得到R、G和B。)