Encontré esta secuencia de comandos RGB a HSL en http://www.mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript. No puedo encontrar otros pequeños decentes. El problema es que este código ni siquiera funciona realmente. ¿Alguien sabría por qué? (No sé un poco de matemáticas color, pero tal vez es devolver el complementaria?)¿Por qué no funciona este código Javascript RGB a 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];
}
Editar: cuando corro rgbToHsl(126,210,22)
que me está dando [0,24, 0,81, 0,45], que es el HSL para un color naranja.
título de la pregunta y el nombre de la función desajuste, ¿qué estás buscando RGB a HSL HSL o RGB? También muestre el código donde está usando esa función. – Sarfraz
¿Cuál es el problema? ¿Qué valores son incorrectos? –
Parece que me funciona, y cuando lo intento, sin duda devuelve una buena matriz HSL. ¿Qué es lo que te hace pensar que no funciona? Debe invocarlo con valores RGB expresados como enteros decimales entre 0 y 255, si eso no está claro. – Pointy