0

我正在从图片中提取主色,然后想根据它是红色、蓝色、绿色、黄色、紫色等来调用不同的函数(我可以拥有的选项越多越好)。所以我想做的是:

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

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

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

基本上,我不完全确定这甚至可以通过这种方式实现 - 有人有任何建议以另一种方式获得相同的最终结果吗?

提前感谢您的帮助。

4

2 回答 2

0

1)我可以比较十六进制吗?如何?如果我能用这个而不是小数来做,那会让生活更轻松。

是和不是。选择结构会很长,如果你想有广泛的颜色选择,我建议按 RGB 值进行比较。您可以将它与java API 中的Color 类一起使用。下面是到 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 中提供)

于 2013-07-25T11:36:23.227 回答
0

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

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

if (parseInt("0x" + h1, 16) < parseInt("0x" + h2, 16) ){
    console.log("H1 is smaller than H2");
}
于 2013-07-25T11:26:42.390 回答