给出css颜色值,如:
rgba(0, 0, 0, 0.86)
假如白色背景,如何将其转换为考虑alpha分量的RGB十六进制值?
答案 0 :(得分:42)
由于alpha值都会减弱背景颜色和颜色值,所以这样的事情可以解决问题:
function rgba2rgb(RGB_background, RGBA_color)
{
var alpha = RGBA_color.a;
return new Color(
(1 - alpha) * RGB_background.r + alpha * RGBA_color.r,
(1 - alpha) * RGB_background.g + alpha * RGBA_color.g,
(1 - alpha) * RGB_background.b + alpha * RGBA_color.b
);
}
(以交互方式试用:http://marcodiiga.github.io/rgba-to-rgb-conversion)
答案 1 :(得分:0)
假设每个通道的值为0 ... 1。 假设问题中方法/函数调用中的缩写对应于参数,则以下内容应该有效。
A = 255 * 0.86
R = 255 * 0
G = 255 * 0
B = 255 * 0
请注意,您可能希望更改它在此处的舍入方式,因为它可能会导致颜色不准确。
此时,这些值实际上仍然是浮点值,但是在理论上可以将它们转换为字节或字符(取决于语言)。
var _A = (byte)219.3
var _R = (byte)0
var _G = (byte)0
var _B = (byte)0
现在你所要做的就是将它们转换为十六进制字符串,并将它们连接起来(ARGB)并在前面添加一个漂亮的小哈希标记(#)
在C#中你可以做类似的事情:
var hexString = string.Format("#{0:X2}{1:X2}{2:X2}{3:X2}", _A, _R, _G, _B);
产生类似的最终结果:
#DB000000
答案 2 :(得分:0)
你可以使用.toString(16)
单独转换红色,绿色和蓝色,然后将结果组合在一个案例中,如果你只想将rgb转换为十六进制...因为你正在寻找将rgba转换为十六进制i我认为最好将rgba转换为rgb然后转换为十六进制,就像我在下面的Fiddle中所做的那样,它也会考虑background-color
parent
的{{1}}。
答案 3 :(得分:-2)
您拥有的rgba值是: rgba(0,0,0,0.86)
前0代表 RED
第二个0代表 GREEN
第三个0代表 BLUE
最后一位数0.86代表 alpha / opacity
以下是rgb到hex转换器的一些链接:
的 http://www.javascripter.net/faq/rgbtohex.htm 强>
的 http://www.rgbtohex.net/ 强>
的 http://www.yellowpipe.com/yis/tools/hex-to-rgb/color-converter.php 强>
您的数字为0,0,0。十六进制代码为
#000000
以下是具有白色背景的低不透明度的代码
的 HTML 强> 的
<div id="parentDiv">
<div id="childDiv">
</div>
</div>
的 CSS 强> 的
#parentDiv
{
height:100px; /* The property of Child is Inherit */
width:100px; /* The property of Child is Inherit*/
background-color:#ffffff;
}
#childDiv
{
height:inherit;
width:inherit;
background-color:#000000;
opacity:0.86;
filter:alpha(opacity="86");
}
现在,父Div是
的背景#ffffff (White color)