使用JavaScript将十六进制代码更改为rgb值

时间:2015-06-22 00:22:55

标签: javascript rgb

有人可以向我解释如何将十六进制代码(例如#FF9C19)转换为rgb值,相应的ex:(255,156,25),或者反过来使用JavaScript?

我找到了一个帖子,问这个但是它正在使用python。

2 个答案:

答案 0 :(得分:1)

  1. Hex 代码使用 base 16(十六进制) RGB 使用 base 10(十进制)
  2. 十六进制代码可分为3个字节,分别描述红色 RR ,绿色 GG 然后蓝色 BB ,即 #RRGGBB
  3. 十六进制的并不总是被写入,或者有时它可能会使用0x&h等(您可能需要根据您的环境考虑这一点)
  4. 将这些放在一起并使用RegExp提取感兴趣的位,并parseInt转换为 base 16 数字的 String 表示

    function hex_to_RGB(hex) {
        var m = hex.match(/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i);
        return {
            r: parseInt(m[1], 16),
            g: parseInt(m[2], 16),
            b: parseInt(m[3], 16)
        };
    }
    // ex.
    hex_to_RGB('#FF0110') // {r: 255, g: 1, b: 16}
    

    当您向相反方向转换时,您将使用num.toString(16)并且如果它们小于(dec) {,请不要忘记使用'0'填充字节{1}}

    如果您使用代表十六进制颜色整数 16开头,则可以使用 RGB 值来访问 RGB 值按位运算,即

    i

答案 1 :(得分:0)

合法的十六进制颜色可以是'#'和rgb组件之后的3或6个字符

可以是0到255之间的百分比或数字。

function hexToRgb(c){
    if(/^#([a-f0-9]{3}){1,2}$/.test(c)){
        if(c.length== 4){
            c= '#'+[c[1], c[1], c[2], c[2], c[3], c[3]].join('');
        }
        c= '0x'+c.substring(1);
        return 'rgb('+[(c>>16)&255, (c>>8)&255, c&255].join(',')+')';
    }
    return '';
}

function rgbToHex(rgb){
    var c= rgb.match(/\d+(\.\d+)?%?/g);
    if(c){
        c= c.slice(0, 3).map(function(next){
            var itm= next;
            if(itm.indexOf('%')!= -1){
                itm= Math.round(parseFloat(itm)*2.55);
            }
            if(itm<0) itm= 0;
            if(itm>255) itm= 255;
            itm= Math.round(itm).toString(16);
            if(itm.length== 1) itm= '0'+itm;
            return itm;
        });
        return '#'+c.join('').toLowerCase();
    }
    return '';
}