Выбор наиболее яркого цвета в javascript

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

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

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


Эта функция возвращает насыщенность (от 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);
 }
 }

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

licensed under cc by-sa 3.0 with attribution.