我正在玩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)];
}
答案 0 :(得分:0)
this online converter大致使用相同的算法。您可以在之后查看该文章是否进行了相反的转换。
H肯定在0到360之间,但是关于S和V则有所不同。像大多数颜色转换或颜色混合模式计算的值一样,使用0到1之间的浮点数。我会说这更好,因为蜂鸣器意味着您可以拥有想要的所有精度级别。
现在,将其乘以100以获得百分比,这种情况并不罕见(例如,在此在线转换器和您当前的JavaScript上)。通常也四舍五入。进行此舍入操作要理解的重要一点是,如果来回rgb > hsv > rgb
进行转换,显然会增加获得不同RGB颜色的机会。如果这很重要,那么您最好使用花车。
由于您要问什么是“有效”,所以我只能说这取决于您要如何使用它或这些数字将在哪里使用。