2011-01-11 18 views
7

Bir grup rengin var ve onların göreli colorfulness bulmak istiyorum. Bana javascript'te bir örnek gösterebilir mi? Çok teşekkürler!javascript'te en renkli rengi seç

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

Sana renkliliği istedi biliyorum, ama bu iyi bir belirten noktası olabilir:

+0

Eğer R, G dayalı renkliliği için denklemi, rengin B değerleri biliyor musunuz? –

+0

Renkliliğin denkleminin x = min (R, G, B) gibi bir şey olduğunu varsayabilirim; Renginlik = (R - x + G - x + B - x)/2.0. Ama rengarenk ne için yararlıdır? Doygunluğu veya Chroma'yı görebiliyorum. – TamusJRoyce

+0

@ Šime, Tüm soruları bir soruyla cevaplıyor musunuz? @Tamus, teşekkürler bunu deneyeceğim. Bir renk paletinde gri renklerden kaçınmak istiyorsanız, renklilik yararlıdır. – MachineElf

cevap

2

// Onların doygunluk renkleri karşılaştırabilirsiniz ve (

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 renkler = [ 'rgb brightness- (Aslında wikipedia sayfası Bunu belirttiğin için teşekkür farkı bilen yoktu) 255,0,0)', 'RGB (150.150.150)', 'RGB (0.200.100)', 'RGB (0.255.255)']; // colors.sort (sortColors) .join ('\ n')

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

Fantastik! hem parlaklık hem de doygunluğun birleşimi benim peşinde olduğum şeydi. Çok teşekkürler – MachineElf

1

Bu fonksiyon RGB değerleri verilen (0.0 ile 1.0) doygunluğu döndürür.

+0

's ' –

+1

ilan etmeyi unuttuysanız, eğer ifadeye ihtiyacınız yok. Delta sıfır ise, delta/maxVal sıfır olacaktır. –

+0

Bu iyi olmalı: 'var max = ...; var min = ...; return (max - min)/max; ' –