2011-11-05 9 views
17

Czy ktoś zna funkcję javascript, która konwertuje kolor RGB na format kolorów HSV?Kolory RGB do HSV w javascript?

(lub jQuery)

+1

Pierwszy znaczący wynik w wyszukiwarce Google: http://www.kourbatov.com/faq/rgb2hsv.htm –

+0

Nie jestem pewien, czy istnieje prosty sposób, ale spójrz [tutaj] (http: // /www.csgnetwork.com/csgcolorsel4.html) i jego kod źródłowy. To może być dla ciebie przydatne – genesis

+0

@RobW. To jest pierwszy znaczący wynik w Google. – Petah

Odpowiedz

46

Oto samodzielna funkcja:

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) 
    }; 
} 

i jak go używać:

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

Biorąc rosnąca popularność KMP myślę, że warto wspomnieć pakiet zawierający wszystkie te funkcje za pośrednictwem prostego API:

npm install colorsys

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

dla przeglądarki: <script src="http://netbeast.github.io/colorsys/browser.js"></script>

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

Jak odpowiedziałem w Javascript convert HSB/HSV color to RGB accurately

Powiązane problemy