HSV颜色的有效范围是多少

时间:2012-07-27 08:39:27

标签: javascript colors hsv

我正在玩HSV颜色。从rgb color转换后我有一个hsv数组:

//hsv[0], hsv[1], hsv[2]
var hsv = rgbToHsv(rgb[0], rgb[1], rgb[2]);

我会添加或减去它

hsv[0] += ...
hsv[1] += ...
hsv[2] += ...

我需要在将其转换回rgb之前验证该值。什么是hsv的有效范围?

这是我用来将rgb转换为hsv

的函数
function rgbToHsv(r, g, b) {  
    var r = (r / 255),  
         g = (g / 255),  
     b = (b / 255);   
    var min = Math.min(Math.min(r, g), b),  
        max = Math.max(Math.max(r, g), b),  
        delta = max - min;  
    var value = max,  
        saturation,  
        hue;  
    // Hue  
    if (max == min) {  
        hue = 0;  
    } else if (max == r) {  
        hue = (60 * ((g-b) / (max-min))) % 360;  
    } else if (max == g) {  
        hue = 60 * ((b-r) / (max-min)) + 120;  
    } else if (max == b) {  
        hue = 60 * ((r-g) / (max-min)) + 240;  
    }  
    if (hue < 0) {  
        hue += 360;  
    }  
    // Saturation  
    if (max == 0) {  
        saturation = 0;  
    } else {  
        saturation = 1 - (min/max);  
    }  
    return [(hue), (saturation * 100), (value * 100)];  
}

1 个答案:

答案 0 :(得分:0)

this online converter大致使用相同的算法。您可以在之后查看该文章是否进行了相反的转换。

H肯定在0到360之间,但是关于S和V则有所不同。像大多数颜色转换或颜色混合模式计算的值一样,使用0到1之间的浮点数。我会说这更好,因为蜂鸣器意味着您可以拥有想要的所有精度级别。

现在,将其乘以100以获得百分比,这种情况并不罕见(例如,在此在线转换器和您当前的JavaScript上)。通常也四舍五入。进行此舍入操作要理解的重要一点是,如果来回rgb > hsv > rgb进行转换,显然会增加获得不同RGB颜色的机会。如果这很重要,那么您最好使用花车。

由于您要问什么是“有效”,所以我只能说这取决于您要如何使用它或这些数字将在哪里使用。