RGBの色がある場合。別のRGB値が最初のRGBに近い場合はtrueを返し、そうでない場合はfalseを返すjavascript関数を作成するにはどうすればよいですか?
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 に答える