Выбираем самый красочный цвет в javascript - PullRequest
7 голосов
/ 11 января 2011

У меня есть группа цветов, и я хочу найти их относительную цветность .Может ли кто-нибудь показать мне пример в JavaScript?Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 11 января 2011

// Вы можете сравнить цвета по их насыщенности и яркости-

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) .join ( '\ п')

/*  returned value: (most to least 'colorful')
rgb(255,0,0)
rgb(0,255,255)
rgb(0,200,100)
rgb(150,150,150)
*/
1 голос
/ 11 января 2011

Эта функция возвращает насыщенность (от 0,0 до 1,0), учитывая значения RGB:

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

Я знаю, что вы просили красок, но это может быть хорошим подтверждением. (Я на самом деле не знал разницу, спасибо, что указали на эту страницу википедии)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...