2017-04-20 6 views
1

16進数の色#000000値のリストがあります。どのように私はjavascriptを使用して16進数の色のリストから最も明るい色を得ることができますか?javascriptを使用して16進値のリストから最も明るい色を得る方法

任意の助けが理解されるであろう

+2

リストが#000000の値ならば、それらはすべて同じです:p –

+0

#FF0000と#00FF00の間で最も軽いと考えているのは何ですか? – Kaiido

+1

@Kaiidoよく、#FF0000と#0000FFの間で、最も明るいのは#00FF00でなければなりません:) – bvj

答えて

2

このformulaによれば、このようなRGB色の輝度(明るさ)を計算することができる:

L = 0.2126*R + 0.7152*G + 0.0722*B; 

あなたがヘクスにこれを適用することができないであろう難しいこと、次いで、最大輝度で色を得る:

function lum(hex) { 
 
    var r = parseInt(hex.substr(1, 2), 16), 
 
     g = parseInt(hex.substr(3, 2), 16), 
 
     b = parseInt(hex.substr(5, 2), 16); 
 
     
 
    return 0.2126*r + 0.7152*g + 0.0722*b;; 
 
} 
 

 
function lightest(colors) { 
 
    var maxIndex = 0, 
 
     maxLum = lum(colors[0]); 
 
     
 
    for(var i = 1; i < colors.length; i++) { 
 
    var iLum = lum(colors[i]); 
 
    if(maxLum < iLum) { 
 
     maxLum = iLum; 
 
     maxIndex = i; 
 
    } 
 
    } 
 
    
 
    return colors[maxIndex]; 
 
} 
 

 
console.log(lightest(["#ff0000", "#ffcd00", "#000000"]));

関連する問題