欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

在JavaScript中转换RGB和16进制颜色值

最编程 2024-01-13 07:55:46
...
// 16进制转RGB值
function _hexToRgb(hex) {
hex = hex.replace(HASH$1, EMPTY_STRING$1); // HASH$1 = '#' ; EMPTY_STRING$1 = ''
var bigint = parseInt(hex, 16);
return {
r: (bigint >> 16) & 255,
g: (bigint >> 8) & 255,
b: bigint & 255,
};
},

// RGB值转16进制
// 其实 ((r << 16) + (g << 8) + b).toString(16)已经可以了,为什么前边还要加个 (1 << 24) 再做处理
// 解释:为了防止 r,g,b值全为 0 的特殊情况, ((1 << 24))的值二进制表示为 100...0(1后边有24个0),加上r(0),g(0),b(0),结果不变, ((1 << 24)).toString(16) 的值为 "1000000"
// 这块跟生成一个随机的16进行颜色值的处理类似,考虑到了 #000000(我们平常使用简写为 #000) 的极端特殊情况,函数如: getRandomColor
function _rgbToHex(r, g, b) {
return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
},

/**
* return random hex color
* @method
* @memberof Konva.Util
* @example
* shape.fill(Konva.Util.getRandomColor());
*/
function getRandomColor() {
var randColor = ((Math.random() * 0xffffff) << 0).toString(16);
// 如果 randColor 的长度不够6位,说明生成的16进制数值 < 2 ** 24,我们需要在高位补0
while (randColor.length < 6) {
randColor = ZERO + randColor; // ZERO = '0'
}
return HASH$1 + randColor; // HASH$1 = '#'
},

// 生成随机rgb值的函数
function getRandomColor1() {
const r = Math.round(Math.random() * 255);
const g = Math.round(Math.random() * 255);
const b = Math.round(Math.random() * 255);

return `rgb(${r},${g},${b})`;
}

推荐阅读