2011-11-05 17 views
17

¿Alguien conoce una función en javascript que convierta el color RGB a formato de color HSV?color RGB a HSV en javascript?

(o jQuery)

+1

Primer resultado significativo en una búsqueda en Google: http://www.kourbatov.com/faq/rgb2hsv.htm –

+0

No estoy seguro de si hay una manera fácil, pero eche un vistazo [aquí] (http://www.csgnetwork.com/csgcolorsel4.html) y su código fuente. Puede ser útil para usted – genesis

+0

@RobW bien ahora este es el primer resultado significativo en Google. – Petah

Respuesta

46

Aquí es una función independiente:

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

Y cómo usarlo:

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

Dada la creciente popularidad de la NGP Creo que vale la pena mencionar un paquete que contiene todas estas funciones a través de una API simple:

NPM instalar colorsys

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

Para el navegador: <script src="http://netbeast.github.io/colorsys/browser.js"></script>

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

Como contesté en Javascript convert HSB/HSV color to RGB accurately

Cuestiones relacionadas