将颜色转换为指定的颜色类型

时间:2011-09-09 12:38:02

标签: javascript jquery colors

我的颜色代码如0xff3a9bda, 0xff73bbf3。我真的不知道这种颜色类型,因为我知道这些不是RGB,aRGB,HSB或HEX

当我正在开发Web应用程序时,我的问题是,我可以使用RGB和任何颜色的HTML颜色代码获取颜色代码,我想要将此颜色转换为上面指定的颜色类型代码

有人可以给我一个想法或解决方案吗?

2 个答案:

答案 0 :(得分:4)

你确定这不是RGBA吗?

0xff3a9bda将为rgba(255,58,155,0.85)(RGBA)或rgba(58,155,218,1)(ARGB)

你可以像这样进行转换:

var c = 0xff3a9bda;
var r = (c & (0xff << 24)) >>> 24;
var g = (c & (0xff << 16)) >>> 16;
var b = (c & (0xff << 8)) >>> 8;
var a = (c & 0xff) / 0xff;
var rgba = 'rgba(' + [r,g,b,a].join(',') + ')';

或者像这样:

var c = 0xff3a9bda;
var a = ((c & (0xff << 24)) >>> 24) / 0xff;
var r = (c & (0xff << 16)) >>> 16;
var g = (c & (0xff << 8)) >>> 8;
var b = c & 0xff;
var rgba = 'rgba(' + [r,g,b,a].join(',') + ')';

在此尝试: http://jsfiddle.net/gX6ds/1/


#RRGGBB转换为以下格式:

var rgb = 'AABBCC';
var c = 0xff000000 + parseInt(rgb, 16);
alert('0x' + c.toString(16));

将R,G,B值转换为以下格式:

var R = 0xAA, G = 0xBB, B = 0xCC;
var c = 0xff000000 + (R << 16) + (G << 8) + B;
alert('0x' + c.toString(16));

答案 1 :(得分:1)

没有必要使问题复杂化。你有一个32位的颜色值,几乎可以肯定你有4个颜色分量(R,G,B,A),每个组件8位。如果格式不是ARGB,那么它可能是RGBA,但这取决于你。通过反复试验确实很简单。

在任何情况下,一旦您知道哪些位代表哪些颜色组件,您需要做的就是提取R,G和B(请参阅arnaud576875的答案),然后将它们连接在一起,如#<R><G><B>,以获取您的HTML色标。

然后取出A组件并将其设置为要应用此颜色的任何元素的opacity。如:

#coloredElem {
    color: #<R><G><B>;
    opacity: <A / 255.0>;
}