我在http://www.mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript处发现了此RGB到HSL脚本。我找不到任何其他体面的小人物。问题是这个代码甚至没有真正的工作。有人会知道为什么吗? (我不知道一点颜色的数学,但也许它的返回互补?)为什么这个Javascript RGB到HSL代码不起作用?
function rgbToHsl(r, g, b){
r /= 255, g /= 255, b /= 255;
var max = Math.max(r, g, b), min = Math.min(r, g, b);
var h, s, l = (max + min)/2;
if(max == min){
h = s = 0; // achromatic
}else{
var 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); break;
case g: h = (b - r)/d + 2; break;
case b: h = (r - g)/d + 4; break;
}
h /= 6;
}
return [h, s, l];
}
编辑:当我运行rgbToHsl(126,210,22)
它给我[0.24,0.81,0.45],这是HSL为橙色。
问题标题和函数的名称不匹配,正是你寻找的RGB到HSL或HSL为rgb?还请显示您使用该功能的代码。 – Sarfraz 2010-02-27 19:19:52
什么问题,什么样的价值观是错误的? – 2010-02-27 19:20:08
它看起来对我很有用,当我尝试它时,肯定会返回一个很好的HSL数组。这是什么让你觉得它不起作用?如果不清楚,您必须用0到255之间的十进制整数表示的RGB值调用它。 – Pointy 2010-02-27 19:20:54