2011-11-05 241 views
17

有誰知道JavaScript中的函數將RGB顏色轉換爲HSV顏色格式?RGB到HSV顏色的JavaScript?

(或jQuery的)

+1

谷歌搜索的第一個重要結果:http://www.kourbatov.com/faq/rgb2hsv.htm –

+0

我不確定是否有一個簡單的方法,但看看[這裏](http:///www.csgnetwork.com/csgcolorsel4.html)及其源代碼。它可能對你有用 – genesis

+0

@RobW現在好了,這是Google的第一個重要結果。 – Petah

回答

46

這裏是一個獨立的功能:

function rgb2hsv() { 
    var rr, gg, bb, 
     r = arguments[0]/255, 
     g = arguments[1]/255, 
     b = arguments[2]/255, 
     h, s, 
     v = Math.max(r, g, b), 
     diff = v - Math.min(r, g, b), 
     diffc = function(c){ 
      return (v - c)/6/diff + 1/2; 
     }; 

    if (diff == 0) { 
     h = s = 0; 
    } else { 
     s = diff/v; 
     rr = diffc(r); 
     gg = diffc(g); 
     bb = diffc(b); 

     if (r === v) { 
      h = bb - gg; 
     }else if (g === v) { 
      h = (1/3) + rr - bb; 
     }else if (b === v) { 
      h = (2/3) + gg - rr; 
     } 
     if (h < 0) { 
      h += 1; 
     }else if (h > 1) { 
      h -= 1; 
     } 
    } 
    return { 
     h: Math.round(h * 360), 
     s: Math.round(s * 100), 
     v: Math.round(v * 100) 
    }; 
} 

以及如何使用它:

console.log(rgb2hsv(60, 120, 180)); 
1

鑑於NPM的日益普及,我認爲這是值得一提,通過一個簡單的API包含此功能包:

NPM安裝colorsys

var colorsys = require('colorsys') 
colorsys.rgb_to_hsv({ r: 255, g: 255, b: 255 }) 
// { h: 0 , s: 0 , v: 100 } 

對於瀏覽器:<script src="http://netbeast.github.io/colorsys/browser.js"></script>

colorsys.rgb_to_hex(h, s, v) 
// #hexcolor 

正如我在Javascript convert HSB/HSV color to RGB accurately的回答