你的意思是你想要RGBA颜色具有最大的透明度,当在白色背景上绘制时,它会给出原始的RGB颜色?
设R 0,G 0和B 0为原始颜色的分量,每个范围从0.0到1.0,并且让R,G,B和A成为新RGBA颜色的分量(A = 1表示100%不透明度) ).我们知道颜色必须满足:
R 0 = A · R +(1- A)
G 0 = A · G +(1- A)
B 0 = A · B +(1- A)
如果我们知道A,我们可以很容易地解决R,G和B:
R =(R 0 - 1 + A)/ A = 1 - (1 - R 0)/ A
G =(G 0 - 1 + A)/ A = 1 - (1 - G 0)/ A
B =(B 0 - 1 + A)/ A = 1 - (1 - B 0)/ A.
由于我们需要ř ≥0,g ^ ≥0和乙 ≥0,它遵循一个1 - [R 0 ≥A,1 - g ^ 0 ≥A和1 - 乙0 ≥A,并且因此,对于最小可能值阿是:
A = max(1 - R 0,1 - G 0,1 - B 0)= 1 - min(R 0,G 0,B 0)
因此,我们想要的颜色是:
A = 1 - min(R 0,G 0,B 0)
R = 1 - (1 - R 0)/ A
G = 1 - (1 - G 0)/ A
B = 1 - (1 - B 0)/ 一个
PS.对于黑色背景,相同的公式甚至更简单:
A = max(R 0,G 0,B 0)
R = R 0/A
G = G 0/A
B = B 0/A
PPS.只是为了澄清,上面的所有公式都是针对非预乘的RGBA颜色.对于预乘alpha,只需将上面计算的R,G和B乘以A,得出:
R = A ·(1 - (1 - R 0)/ A)= R 0 - (1 - A)
G = A ·(1 - (1 - G 0)/ A)= G 0 - (1 - A)
B = A ·(1 - (1 - B 0)/ A)= B 0 - (1 - A)
(或者,对于黑色背景,简单地R = R 0,G = G 0且B = B 0.)
归档时间: |
|
查看次数: |
1548 次 |
最近记录: |