Ho trovato questo script da RGB a HSL a http://www.mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript. Non riesco a trovare altri piccoli decenti. Il problema è che questo codice non funziona davvero. Qualcuno saprebbe perché? (Non so un po 'di matematica di colore, ma forse è la restituzione del complementare?)Perché questo codice da Javascript RGB a HSL non funziona?
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];
}
Edit: quando corro rgbToHsl(126,210,22)
mi sta dando [.24, .81, .45], che è l'HSL per un colore arancione.
titolo domanda e nome della funzione mis-match, che cosa esattamente stai cercando RGB a HSL o HSL a RGB? Mostra anche il codice dove stai usando quella funzione. – Sarfraz
Qual è il problema, quali valori sono sbagliati? –
Sembra che funzioni per me, e quando lo provo certamente restituisce un buon array HSL. Cos'è che ti fa pensare che non funzioni? Devi invocarlo con valori RGB espressi come interi decimali tra 0 e 255, se questo non è chiaro. – Pointy