2012-07-16 172 views
1

如果我在RGB中有顏色。如何創建一個javascript函數,當另一個RGB值接近初始RGB時返回true,否則返回false?如何獲得接近另一種顏色的顏色的rgb值?

+0

這是否與Canvas /用戶輸入有關?你用的是jQuery嗎? – 2012-07-16 14:22:11

+0

你能給出一個接近另一個的顏色和一個不接近它的顏色的例子嗎? – smilledge 2012-07-16 14:23:02

+1

這一切都取決於你如何定義「關閉」。你的意思是色調接近嗎?接近光度? – robertc 2012-07-16 14:48:47

回答

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

,並根據您的具體問題的顏色距離的意思可以是不同的,例如,也許在你的情況,你將需要將&&更改爲||

+0

謝謝,這是我需要的 – omega 2012-07-16 14:54:41

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矢量距離)的顏色,但仍有其具有通過實驗選擇了門檻參數。