我在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