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

Convert color to specified color type

本文关键字:颜色 类型 转换      更新时间:2023-09-26

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

当我在web应用程序上工作时,我的问题是,我可以用JavaScript在RGB和HTML颜色代码中获得任何颜色的颜色代码,我想将此颜色转换为上述指定的颜色类型代码

谁能给我一个主意或解决这个问题?

你确定这不是RGBA吗?

0xff3a9bdargba(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));

没有必要把事情弄得太复杂。你在那里得到了一个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>;
}