在javascript中使用十六进制或十进制比较颜色范围

时间:2013-07-25 11:17:59

标签: javascript if-statement colors

我从图片中提取主色,然后根据它是红色,蓝色,绿色,黄色,紫色等来调用不同的功能(我可以拥有的选项越多越好)。所以我希望能够做到的是:

if(color < maxColorValueRed && color > minColorValueRed) {
function1();
}
else {
if { .....

其中maxColorValue和minColorValue是十六进制或十进制颜色值,并且它们之间的所有值都将计为相同的粗略颜色 - 例如,指定(大致)最小和最大红色。

所以我有两个问题: 1)我可以比较十六进制吗?如何?如果我能用这个而不是十进制来做它会让生活更轻松。 2)任何人都有一个方便的图表给出颜色范围?普通的图表(即我在谷歌上可以找到的)正在努力。 。 。看着他们,我甚至不能100%确定我可以指定这样的范围吗?

基本上,我不能完全确定这种方式是否可行 - 任何人都有建议以另一种方式获得相同的最终结果?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我可以回答#1。您可以通过将十六进制数转换为10的基数来比较它。像这样

var h1 = "FFFF00", h2 = "FFFF01";

if (parseInt("0x" + h1, 16) < parseInt("0x" + h2, 16) ){
    console.log("H1 is smaller than H2");
}

答案 1 :(得分:0)

  

1)我可以比较十六进制吗?如何?如果我这会让生活变得更轻松   可以用这个来代替小数。

是和否。选择结构会很长,如果你想要有多种颜色选择,我建议按RGB值进行比较。您可以将它与java API中的Color class一起使用。下面是RGB的转换方法,并返回Color对象。

// color string is of type "#FFFFFF"
private Color hexToColor(String hex) {
    return new Color(
        Integer.valueOf(hex.substring(1,3), 16),
        Integer.valueOf(hex.substring(3,5), 16),
        Integer.valueOf(hex.substring(5,7), 16));
}

如果它是有效的十六进制字符串,你必须首先控制它。 然后只比较颜色类和预定义的静态颜色(如结构中的Color.GREEN,Color.CYAN),比较更容易。 (也在上面的API类中提供)