将RGBA转换为HEX

时间:2014-02-05 11:33:50

标签: html css colors hex rgba

给出css颜色值,如:

 rgba(0, 0, 0, 0.86)

假如白色背景,如何将其转换为考虑alpha分量的RGB十六进制值?

4 个答案:

答案 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)