可能重复:
Algorithm to convert RGB to HSV and HSV to RGB?HSV(0 .. 255)RGB(0 .. 255)
是否有人对如何使用HSV值转换为RGB时解释该值是0到255?此外,
作为参考,我想在C++中做到这一点。
可能重复:
Algorithm to convert RGB to HSV and HSV to RGB?HSV(0 .. 255)RGB(0 .. 255)
是否有人对如何使用HSV值转换为RGB时解释该值是0到255?此外,
作为参考,我想在C++中做到这一点。
function hsvToRgb(h, s, v){
var r, g, b;
var i = Math.floor(h * 6);
var f = h * 6 - i;
var p = v * (1 - s);
var q = v * (1 - f * s);
var t = v * (1 - (1 - f) * s);
switch(i % 6){
case 0: r = v, g = t, b = p; break;
case 1: r = q, g = v, b = p; break;
case 2: r = p, g = v, b = t; break;
case 3: r = p, g = q, b = v; break;
case 4: r = t, g = p, b = v; break;
case 5: r = v, g = p, b = q; break;
}
return [r * 255, g * 255, b * 255];
}
编辑:
我曾经写过一个颜色选择器和用于了解这一切。那时候,我看着photoshop颜色选择器,试着绕过十字线,观察hsv/rgb数字的变化并找出它们的工作原理。在这种情况下,i
似乎找到在这一点上,主色调,色相,指出它。色调的值实际上是一种完全饱和的颜色循环,以红色开始并以红色结束。有一个三角形,每个点代表R,G和B,其中0度是R.在R和G之间,它是黄色,在R和B之间,它是品红色,在B和G之间,它是青色。我们共有6种颜色。这6种颜色来自情况0至5.
对不起,我应该发布我希望HSV(0..255)到RGB(0..255)和一个很好的解释 – judeclarke
输出已经在0..255范围内。您可以将算法转换为输入范围为0..255,方法是将h,s,v分别除以255.但坦率地说,如果您没有看到,则会出现更大的问题 – hirschhornsalz
@ drhirsch,粗鲁无礼,没有帮助。由于代码中没有解释,因此我看不到输入是如何(0 .. 255)。例如,为什么这样的情况?每个案件都做了什么? – judeclarke
http://en.wikipedia.org/wiki/HSL_and_HSV哪一部分 - 转换为RGB你不明白?简单地在这里重新发布一个算法将是没有意义的,请告诉我们哪个部分不工作/你不明白它 –
@ Ravadre,我希望有更多的“lamens术语”的东西。维基百科以不必要的更复杂的方式呈现公式而臭名昭着。 – judeclarke
@ Kerrek SB,当时真的很粗鲁吗? – judeclarke