有谁知道采用两个十六进制颜色值并返回某种索引来表示颜色相似程度的方法吗?例如两个黄色的阴影可能会返回一个更高的索引,即他们比说灰色和黄色更类似?从十六进制值中检测相似的颜色
(即时通讯使用JavaScript,但想这样的事情会是一个独立于语言的公式/算法)
有谁知道采用两个十六进制颜色值并返回某种索引来表示颜色相似程度的方法吗?例如两个黄色的阴影可能会返回一个更高的索引,即他们比说灰色和黄色更类似?从十六进制值中检测相似的颜色
(即时通讯使用JavaScript,但想这样的事情会是一个独立于语言的公式/算法)
这里可能是一个算法入手:的
function hexColorDelta(hex1, hex2) {
// get red/green/blue int values of hex1
var r1 = parseInt(hex1.substring(0, 2), 16);
var g1 = parseInt(hex1.substring(2, 4), 16);
var b1 = parseInt(hex1.substring(4, 6), 16);
// get red/green/blue int values of hex2
var r2 = parseInt(hex2.substring(0, 2), 16);
var g2 = parseInt(hex2.substring(2, 4), 16);
var b2 = parseInt(hex2.substring(4, 6), 16);
// calculate differences between reds, greens and blues
var r = 255 - Math.abs(r1 - r2);
var g = 255 - Math.abs(g1 - g2);
var b = 255 - Math.abs(b1 - b2);
// limit differences between 0 and 1
r /= 255;
g /= 255;
b /= 255;
// 0 means opposit colors, 1 means same colors
return (r + g + b)/3;
}
可能重复[基于RGB值(或可能是HSV)检查颜色相似度的算法](http://stackoverflow.com/questions/5392061/algorithm-to-check-similarity-of-colors-based-on-rgb-values-or -maybe-hsv) – Chris
看起来很有前途,谢谢chris – alfonsob