js hsl颜色算法
时间: 2023-10-12 22:15:53 浏览: 41
HSL(Hue, Saturation, Lightness)是一种基于色调、饱和度和亮度来描述颜色的颜色空间。在 JavaScript 中,可以使用以下算法将 RGB 颜色转换为 HSL 颜色:
1. 将 RGB 颜色值除以 255,得到相对比例的 R、G、B 值。
2. 找到最大和最小的 R、G、B 值,计算它们的差值。
3. 根据最大和最小值计算出色调(Hue)。如果最大和最小值相等,则色调为 0。否则,如果最大值是 R,则色调为 ((G-B)/(max-min))*60+360,如果最大值是 G,则色调为 ((B-R)/(max-min))*60+120,如果最大值是 B,则色调为 ((R-G)/(max-min))*60+240。
4. 计算饱和度(Saturation)。如果最大和最小值相等,则饱和度为 0。否则,饱和度为 (max-min)/(1-|2L-1|),其中 L 是亮度值。
5. 计算亮度(Lightness)。亮度为 (max+min)/2。
以下是 JavaScript 代码示例:
```
function rgbToHsl(r, g, b) {
r /= 255, g /= 255, b /= 255;
let max = Math.max(r, g, b), min = Math.min(r, g, b);
let h, s, l = (max + min) / 2;
if (max === min) {
h = s = 0;
} else {
let d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
switch (max) {
case r: h = ((g - b) / d + (g < b ? 6 : 0)) * 60; break;
case g: h = ((b - r) / d + 2) * 60; break;
case b: h = ((r - g) / d + 4) * 60; break;
}
}
return [h, s, l];
}
```
这个函数接受三个参数 R、G、B,返回一个数组,包含对应的色调、饱和度和亮度值。