function hex2rgb(sColor) { sColor = sColor.toLowerCase(); // 如果是16进制颜色 if (sColor.length === 4) { var sColorNew = "#"; for (var i = 1; i < 4; i += 1) { sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)); } sColor = sColorNew; } //处理六位的颜色值 var sColorChange = []; for (var i = 1; i < 7; i += 2) { sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2))); } return sColorChange; }; // 参数arr的值分别为[r,g,b] function rgb2hsv(arr, arr1) { let h = 0, s = 0, v = 0; let r = arr[0], g = arr[1], b = arr[2]; arr.sort(function (a, b) { return a - b; }); let max = arr[2]; let min = arr[0]; v = max / 255; if (max === 0) { s = 0; } else { s = 1 - (min / max); } if (max === min) { h = 0; // 事实上,max===min的时候,h无论为多少都无所谓 } else if (max === r && g >= b) { h = 60 * ((g - b) / (max - min)) + 0; } else if (max === r && g < b) { h = 60 * ((g - b) / (max - min)) + 360; } else if (max === g) { h = 60 * ((b - r) / (max - min)) + 120; } else if (max === b) { h = 60 * ((r - g) / (max - min)) + 240; } h = parseInt(h); s = parseInt(s * 100); v = parseInt(v * 100); return [h, s, v]; } // 参数arr的3个值分别对应[h, s, v] function hsv2rgb(arr) { let h = arr[0], s = arr[1], v = arr[2]; s = s / 100; v = v / 100; let r = 0, g = 0, b = 0; let i = parseInt((h / 60) % 6); let f = h / 60 - i; let p = v * (1 - s); let q = v * (1 - f * s); let t = v * (1 - (1 - f) * s); switch (i) { case 0: r = v; g = t; b = p; break; case 1: r = q; g = v; b = p; break; case 2: r = p; g = v; b = t; break; case 3: r = p; g = q; b = v; break; case 4: r = t; g = p; b = v; break; case 5: r = v; g = p; b = q; break; default: break; } r = parseInt(r * 255.0); g = parseInt(g * 255.0); b = parseInt(b * 255.0); return `rgb(${r},${g},${b})`; } function rgb2hex(color) { // RGB颜色值的正则 var reg = /^(rgb|RGB)/; if (reg.test(color)) { var strHex = "#"; // 把RGB的3个数值变成数组 var colorArr = color.replace(/(?:(|)|rgb|RGB)*/g, "").split(","); // 转成16进制 for (var i = 0; i < colorArr.length; i++) { var hex = Number(colorArr[i]).toString(16); if (hex === "0") { hex += hex; } strHex += hex; } return strHex; } else { return String(color); } };