Javascript 从十六进制值中检测相似的颜色

Javascript 从十六进制值中检测相似的颜色,javascript,colors,Javascript,Colors,有没有人知道一种方法,可以获取两个十六进制颜色值并返回某种索引,以说明颜色有多相似?e、 g两种黄色可能会返回更高的指数,即它们比灰色和黄色更相似 (我使用的是javascript,但我猜这可能是一个独立于语言的公式/算法)这里可以从一个算法开始: var yellow1=“FFFF99”; var yellow2=“FFFF00”; var blue=“0000FF”; 函数hexColorDelta(hex1、hex2){ //获取hex1的红/绿/蓝int值 var r1=parseIn

有没有人知道一种方法,可以获取两个十六进制颜色值并返回某种索引,以说明颜色有多相似?e、 g两种黄色可能会返回更高的指数,即它们比灰色和黄色更相似


(我使用的是javascript,但我猜这可能是一个独立于语言的公式/算法)

这里可以从一个算法开始:

var yellow1=“FFFF99”;
var yellow2=“FFFF00”;
var blue=“0000FF”;
函数hexColorDelta(hex1、hex2){
//获取hex1的红/绿/蓝int值
var r1=parseInt(hex1.子字符串(0,2,16);
var g1=parseInt(hex1.子字符串(2,4,16);
var b1=parseInt(hex1.子字符串(4,6,16);
//获取hex2的红色/绿色/蓝色int值
var r2=parseInt(hex2.子字符串(0,2,16);
var g2=parseInt(hex2.substring(2,4,16));
var b2=parseInt(hex2.子字符串(4,6,16);
//计算红色、绿色和蓝色之间的差异
var r=255-数学绝对值(r1-r2);
VARG=255-Math.abs(g1-g2);
VarB=255-数学绝对值(b1-b2);
//限制0和1之间的差异
r/=255;
g/=255;
b/=255;
//0表示相反的颜色,1表示相同的颜色
返回(r+g+b)/3;
}
console.log(hexColorDelta(黄色1,黄色2));//0.7999999999999999

console.log(hexColorDelta(黄色1,蓝色));//0.19999999999998
我一直在搜索Pascal代码以寻找解决方案

我放弃了帕斯卡限制,发现了这个问题

Red()、Green()和Blue()函数替换“parseInt”

取代

r /= 255;
g /= 255;
b /= 255;
return (r + g + b) / 3;

Bazza

可能会复制看起来很有希望,谢谢chris
r /= 255;
g /= 255;
b /= 255;
return (r + g + b) / 3;