2011-11-05 14 views
17

Qualcuno sa una funzione in javascript che converte il colore RGB a colori formato HSV?RGB a colori HSV in javascript?

(o jQuery)

+1

risultato primo significativo a una ricerca su Google: http://www.kourbatov.com/faq/rgb2hsv.htm –

+0

Non sono sicuro se c'è un modo semplice, ma date un'occhiata [qui] (http://www.csgnetwork.com/csgcolorsel4.html) e il suo codice sorgente. Potrebbe essere utile per voi – genesis

+0

@RobW bene ora questo è il primo risultato significativo su Google. – Petah

risposta

46

Ecco una funzione autonoma:

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

E come usarlo:

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

data la popolarità crescente di NPM penso che vale la pena di parlare di un pacchetto che contiene tutte queste funzioni attraverso una semplice API:

npm installare colorsys

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

Per il browser: <script src="http://netbeast.github.io/colorsys/browser.js"></script>

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

Come ho risposto in Javascript convert HSB/HSV color to RGB accurately

Problemi correlati