1

HSVカラーで遊んでいます。RGBカラーから変換した後の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)];  
}
4

1 に答える 1

0

このオンライン コンバーターには、ほぼ同じアルゴリズムが使用されます。反対の変換については、後で記事を確認できます。

H は 0 から 360 の間で間違いありませんが、S と V に関しては異なります。カラー変換またはカラー ブレンディング モード計算のほとんどの値と同様に、0 から 1 の間の浮動小数点数が使用されます。フロートであることは、必要なすべてのレベルの精度を持つことができることを意味するため、より良いと思います。

今では (このオンライン コンバーターや現在の JavaScript のように) 100 を掛けてパーセンテージを求めることは珍しくありません。丸みを帯びることも多い。この丸めで理解しておくべき重要なことは、前後に変換すると、異なる RGB カラーが得られる可能性が明らかに高くなることですrgb > hsv > rgb。これが重要な場合は、フロートの方が適しています。

「有効」とは何かを尋ねているので、それをどのように使用したいか、またはこれらの番号が使用される場所にのみ依存すると思います。

于 2019-07-26T04:31:47.227 に答える