Pourquoi ce code Javascript RVB au code HSL ne fonctionne-t-il pas?
J'ai trouvé cette RVB pour HSL script plus à http://www.mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript. Je ne peux pas trouver n'importe quelle autre petite décent. Le problème est que ce code n'a même pas vraiment de travail. Quelqu'un sait pourquoi? (Je ne sais pas un peu de la couleur de maths, mais c'est peut-être le retour de la complémentarité?)
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: quand je lance rgbToHsl(126,210,22)
me [ .24, .81, .45 ], ce qui est de la LGV pour une couleur orange.
source d'informationauteur Kyle Hotchkiss
Vous devez vous connecter pour publier un commentaire.
L'résultant HSV tableau doit être interprété en trois fractions. Pour certains programmes, si vous voulez exprimer HSV que les entiers, vous multipliez le "H" de la valeur de 360, et le "S" et le "V" des valeurs par 100. Le HSV valeur que vous citez pour votre nuance de vert RGB[126, 210, 22] est HSV [87, 81, 45] dans les entiers. Vous pouvez modifier la fonction pour renvoyer ces entiers si vous voulez:
[edit] cela dit, c'est encore de me donner quelque chose avec une luminosité ("L" ou "V") c'est beaucoup trop sombre; Gimp dit que le HSV valeur doit être [90, 80, 82], ou en fractions d'termes [.20, .80, .82].
[un autre edit] bien un problème pourrait être que HSL et HSV sont différents régimes ... toujours à la recherche autour.
OK dans le cas où quelqu'un veut RVB à HSV (comme on peut en voir dans Gimp par exemple), voici une version de:
Fonction ci-dessous convertit
RGB
de la couleur dans la Teinte la Saturation la Luminosité de la couleur comme Photoshop sélecteur de couleur, les résultats sont dans les gammes:Je ne comprends toujours pas pourquoi les gens utilisent le terme
HSV
(Teinte Saturation Valeur) au lieu deHSB
(Teinte Saturation Luminosité), de toute façon c'est une question de fo de la terminologie, les résultats sont les mêmesExemple d'utilisation: