在javascript中选择最丰富多彩的颜色

时间:2011-01-11 14:08:30

标签: javascript colors

我有一组颜色,我想找到他们的亲戚colorfulness。任何人都可以在javascript中向我展示一个例子吗?非常感谢!

2 个答案:

答案 0 :(得分:2)

//您可以根据饱和度和亮度来比较颜色 -

function rgbtoHsv(rgb){
    var c= rgb.match(/\d+/g),
    r= c[0]/255, g= c[1]/255, b= c[2]/255,
    max= Math.max(r, g, b), min= Math.min(r, g, b),
    h= 0, s= 0, v= max;
    if(max!= min){
        var d= max-min;
        s= d/max;
        switch(max){
            case r: h= (g-b)/d +(g< b? 6: 0);
            break;
            case g: h= (b-r)/d + 2;
            break;
            case b: h= (r-g)/d + 4;
            break;
        }
    }
    return [Math.round(h*60), Math.round(s*100), Math.round(v*100)];
}
function sortColors(a, b){
    var a1= rgbtoHsv(a), b1= rgbtoHsv(b);
    return  (b1[1]+b1[2])-  (a1[1]+a1[2]);
}

var colors = ['rgb(255,0,0)','rgb(150,150,150)','rgb(0,200,100)','rgb(0,255,255)']; // 的 colors.sort(sortColors)。加入( '\ n')

/*  returned value: (most to least 'colorful')
rgb(255,0,0)
rgb(0,255,255)
rgb(0,200,100)
rgb(150,150,150)
*/

答案 1 :(得分:1)

给定RGB值,此函数返回饱和度(从0.0到1.0):

 function saturation(r,g,b) {
     var minVal = Math.min(r, g, b);
     var maxVal = Math.max(r, g, b);
     var delta = maxVal - minVal;
     if (maxVal === 0 ) {
          return 0;
     } else {
          return (delta / maxVal);
     }
 }

我知道你要求多彩,但这可能是一个很好的说明点。 (我实际上并不知道区别,谢谢你指出维基百科页面)