减法 - 需要得到一个颜色
问题描述:
我只是想获得一个RGB色(#ebfcff)的RGBA值的透明值。 rgb-color是放在白色背景上的rgba。 (a代表阿尔法)减法 - 需要得到一个颜色
所以: searchedColour + #FFFFFF = #ebfcff
在我的评估中的解决办法是减去#ebfcff白色。 但你如何减去颜色?
我已经搜索到了适当的解决方案。 有谁知道如何从给定的RGB-颜色中减去白色以获得rgba格式的新颜色,该颜色与白色重叠时等于给定颜色?
答
颜色值不只是增加。
当上绘制颜色Y
顶部的颜色X
,所得到的颜色,C
的每个颜色通道的值,由下式给出:
C = X * a + Y * (a-1)
使用浮点表示(每个信道是从0到1的值);其中a
是X
的alpha通道。 (它很容易转换回0-255)。
为白色,Y
是1所有通道,所以:
C = X * a + (a-1)
所以,如果a
是0,你显然不能找到X,这是有道理的:如果颜色是完全透明的,它对组合的颜色没有影响。同样,如果你的颜色是白色的(X
= 1),你不能确定阿尔法(组合的颜色将是白色,不管阿尔法)。
此外,您不知道另一个也找不到X
或a
。
如果您知道颜色的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
)。
你可以对其进行优化,以避免浮点运算。
我不知道这是任何使用,但是这是你能做的一切。
的可能重复的[转换RGB--> RGBA](HTTP://计算器。com/questions/6672374/convert-rgb-rgba) – BoltClock 2012-04-22 13:42:59