how to get rgb values for a color that's close to another color?

自闭症网瘾萝莉.ら 提交于 2019-12-19 11:17:48

问题


If I have a color in RGB. How can I create a javascript function that returns true when another RGB value is close to the initial RGB and false otherwise?


回答1:


I've used this and it works very well for me:

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

and depending on your particular problem the meaning of the color distance can be different, for example maybe in your case you would need to change && to ||




回答2:


It all depends what means 'close' to you. You can make function like:

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

which would match colors that are very close (based on simple rgb vector distance), but still there is a threshold parameter which has to be chosen experimentally.



来源:https://stackoverflow.com/questions/11506302/how-to-get-rgb-values-for-a-color-thats-close-to-another-color

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!