如果我有 RGB 中的颜色。如何创建一个 JavaScript 函数,当另一个 RGB 值接近初始 RGB 时返回 true,否则返回 false?
问问题
1861 次
2 回答
4
我已经使用了它,它对我来说效果很好:
// 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;
}
并且根据您的特定问题,颜色距离的含义可能会有所不同,例如,在您的情况下,您可能需要更改&&
为||
于 2012-07-16T14:33:08.960 回答
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 矢量距离),但仍然存在必须通过实验选择的阈值参数。
于 2012-07-16T14:35:33.270 回答