【问题标题】:Choosing the most colorful color in javascript在javascript中选择最丰富多彩的颜色
【发布时间】:2011-01-11 14:08:30
【问题描述】:

我有一组颜色,我想找到它们的亲戚colorfulness。谁能给我看一个javascript的例子?非常感谢!

【问题讨论】:

  • 你知道根据颜色的 R、G、B 值计算色彩的方程式吗?
  • 我假设色彩等式类似于 x = min(R, G, B);色彩 = (R - x + G - x + B - x) / 2.0。但是色彩有什么用呢?我可以看到饱和度或色度。
  • @Šime,你用问题回答所有问题吗? @Tamus,谢谢,我会试试的。如果您想避免调色板中出现灰色,那么色彩非常有用。
  • @Bodyscanner 这叫做评论。它用于了解有关问题的更多信息,并且通常无需回答问题即可与 OP 进行交流。一旦你弄清楚它是如何工作的,你就会爱上它:)
  • @Šime,不,我不知道我发布的问题的答案。

标签: javascript colors


【解决方案1】:

// 你可以通过饱和度和亮度来比较颜色-

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('\n')

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

【讨论】:

  • 太棒了!亮度和饱和度的结合是我所追求的。非常感谢
【解决方案2】:

此函数返回给定 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);
     }
 }

我知道您要求色彩丰富,但这可能是一个很好的说明点。 (实际上我并不知道其中的区别,感谢您指出该维基百科页面)

【讨论】:

  • 另外,你不需要那个 if 语句。如果 delta 为零,则 delta/maxVal 将为零。
  • 应该没问题:var max = ...; var min = ...; return (max - min) / max;
  • 对,但有趣的是 jsfiddle.net 上的 jslint 没有指出任何问题(关于声明)。
  • 好的,现在检查是为了防止被零除(他们说这很糟糕)
  • @UVL 当您忘记声明变量时,该变量将成为隐式全局变量。这不是错误。但是,应该避免。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-08
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多