color/hexToRgb.js

/**
 * 十六进制颜色转rgb
 * @alias yd_string_hexToRgb
 * @category color
 * @param {string} hex 要转换的hex颜色值
 * @returns {string} rgb颜色
 * @author wzskyline
 * @example  yd_string_hexTorgb('#FF0000') -> rgb(255, 0, 0)
 */
export default (hex) => {
    let alpha = false;
    let h = hex.slice(hex.startsWith('#') ? 1 : 0);
    if (h.length === 3) h = [...h].map((x) => x + x).join('');
    else if (h.length === 8) alpha = true;
    h = parseInt(h, 16);
    return 'rgb' + (alpha ? 'a' : '') + '(' + (h >>> (alpha ? 24 : 16)) + ', ' + ((h & (alpha ? 0x00ff0000 : 0x00ff00)) >>> (alpha ? 16 : 8)) + ', ' + ((h & (alpha ? 0x0000ff00 : 0x0000ff)) >>> (alpha ? 8 : 0)) + (alpha ? `, ${h & 0x000000ff}` : '') + ')';
};