【问题标题】:how to get rgb values for a color that's close to another color?如何获取接近另一种颜色的颜色的 rgb 值?
【发布时间】:2012-07-15 10:02:28
【问题描述】:

如果我有 RGB 中的颜色。如何创建一个 JavaScript 函数,当另一个 RGB 值接近初始 RGB 时返回 true,否则返回 false?

【问题讨论】:

  • 这是否与画布/用户输入有关?你在使用 jQuery 吗?
  • 你能举一个颜色的例子吗?一种颜色接近另一种颜色,另一种颜色不接近?
  • 这完全取决于您如何定义“关闭”。你的意思是色相接近吗?亮度接近?

标签: javascript html canvas colors rgb


【解决方案1】:

这完全取决于对您来说“接近”意味着什么。您可以制作如下功能:

var color1 = { "r": 255, "g": 255, "b": 255 }
var color2 = { "r": 250, "g": 252, "b": 252 }

function isClose(color1, color2) {
    var threshold = 30;
    var distance = Math.abs(color1.r - color2.r) + Math.abs(color1.g - color2.g) + Math.abs(color1.b - color2.b);

    if (distance < threshold) return true;
    return false;
}

这将匹配非常接近的颜色(基于简单的 rgb 矢量距离),但仍然有一个 threshold 参数,必须通过实验选择。 p>

【讨论】:

    【解决方案2】:

    我用过这个,对我来说效果很好:

    // assuming that color1 and color2 are objects with r, g and b properties
    // and tolerance is the "distance" of colors in range 0-255
    function isNeighborColor(color1, color2, tolerance) {
        if(tolerance == undefined) {
            tolerance = 32;
        }
    
        return Math.abs(color1.r - color2.r) <= tolerance
            && Math.abs(color1.g - color2.g) <= tolerance
            && Math.abs(color1.b - color2.b) <= tolerance;
    }
    

    根据您的具体问题,颜色距离的含义可能会有所不同,例如,在您的情况下,您可能需要将 &amp;&amp; 更改为 ||

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-13
      • 2013-03-26
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多