2012-04-22 64 views
0

我只是想获得一个RGB色(#ebfcff)的RGBA值的透明值。 rgb-color是放在白色背景上的rgba。 (a代表阿尔法)减法 - 需要得到一个颜色

所以: searchedColour + #FFFFFF = #ebfcff

在我的评估中的解决办法是减去#ebfcff白色。 但你如何减去颜色?

我已经搜索到了适当的解决方案。 有谁知道如何从给定的RGB-颜色中减去白色以获得rgba格式的新颜色,该颜色与白色重叠时等于给定颜色?

+0

的可能重复的[转换RGB--> RGBA](HTTP://计算器。com/questions/6672374/convert-rgb-rgba) – BoltClock 2012-04-22 13:42:59

回答

2

颜色值不只是增加。

当上绘制颜色Y顶部的颜色X,所得到的颜色,C的每个颜色通道的值,由下式给出:

C = X * a + Y * (a-1) 

使用浮点表示(每个信道是从0到1的值);其中aX的alpha通道。 (它很容易转换回0-255)。

为白色,Y是1所有通道,所以:

C = X * a + (a-1) 

所以,如果a是0,你显然不能找到X,这是有道理的:如果颜色是完全透明的,它对组合的颜色没有影响。同样,如果你的颜色是白色的(X = 1),你不能确定阿尔法(组合的颜色将是白色,不管阿尔法)。

此外,您不知道另一个也找不到Xa

如果您知道颜色的alpha值,那么您可以确定颜色是什么,但是如果您的组合颜色(C)是离散值(例如0到255之间的整数),则将其舍入,所以你只能得到一个近似的绘制颜色(X)。它的精确度取决于alpha(绘制的颜色越透明,颜色的确定越不准确)。

所以,求解X:

  X * a = C - a - 1 
Therefore: X = (C - a - 1)/a 

对于8位颜色通道(24位颜色):

X = 255 * (C/255 - a/255 - 1)/(a/255) 

(给定一个6位的十六进制值时,应用此对每个一对数字,C)。

你可以对其进行优化,以避免浮点运算。

我不知道这是任何使用,但是这是你能做的一切。

相关问题