在 Java 中获取具有不同 RGB 值的相同颜色
Getting same color with different RGB value in Java
我正在使用 jxl 读取 Excel 文件。我需要根据单元格的字体颜色做出决定。单元格的字体颜色,我得到的是黑色,但 RGB 值是 (1, 0, 0)。
当我将它与 Colour.BLACK 进行比较时,== 比较失败,因为 Colour.BLACK 的 RGB 值为 (0,0,0)。
Colour color = nameCell.getCellFormat().getFont().getColour();
if(color == Colour.BLACK) //fails this test
options = "0";
else
options = "1";
在上面的代码中color.getDescription()
在描述中给出了黑色。
我如何才能发现 "black" 在对象 Colour.BLACK
和 nameCell.getCellFormat().getFont().getColour()
中是常见的?
您需要一种方法来比较 Java 中的颜色。
您可以在这里找到相关信息:how could i compare colors in java?
无论如何:
您需要比较相等性,而不是相同性,因此:
color == Color.BLACK
必须翻译成 Color.BLACK.equals(color)
由于您需要进行近似比较,因此您需要一种方法来计算颜色之间的 距离 并强制它低于(实验确定的)值。
这是一个例子:
public static double distance (Color c1, Color c2){
double deltaRed=Math.pow((c1.getRed()-c2.getRed())/255.0,2.0);
double deltaBlue=Math.pow((c1.getBlue()-c2.getBlue())/255.0,2.0);
double deltaGreen=Math.pow((c1.getGreen()-c2.getGreen())/255.0,2.0);
double total=Math.sqrt((deltaRed+deltaBlue+deltaGreen)/3.0);
return total;
}
Color color = nameCell.getCellFormat().getFont().getColor();
if(distance(color,Color.BLACK) < 0.02)
options = "0";
else
options = "1";
rgb(1,0,0) 是很深的灰色!
尝试
if (r <2 && g < 2 && b < 2) ....
我正在使用 jxl 读取 Excel 文件。我需要根据单元格的字体颜色做出决定。单元格的字体颜色,我得到的是黑色,但 RGB 值是 (1, 0, 0)。
当我将它与 Colour.BLACK 进行比较时,== 比较失败,因为 Colour.BLACK 的 RGB 值为 (0,0,0)。
Colour color = nameCell.getCellFormat().getFont().getColour();
if(color == Colour.BLACK) //fails this test
options = "0";
else
options = "1";
在上面的代码中color.getDescription()
在描述中给出了黑色。
我如何才能发现 "black" 在对象 Colour.BLACK
和 nameCell.getCellFormat().getFont().getColour()
中是常见的?
您需要一种方法来比较 Java 中的颜色。
您可以在这里找到相关信息:how could i compare colors in java?
无论如何:
您需要比较相等性,而不是相同性,因此:
color == Color.BLACK
必须翻译成Color.BLACK.equals(color)
由于您需要进行近似比较,因此您需要一种方法来计算颜色之间的 距离 并强制它低于(实验确定的)值。
这是一个例子:
public static double distance (Color c1, Color c2){
double deltaRed=Math.pow((c1.getRed()-c2.getRed())/255.0,2.0);
double deltaBlue=Math.pow((c1.getBlue()-c2.getBlue())/255.0,2.0);
double deltaGreen=Math.pow((c1.getGreen()-c2.getGreen())/255.0,2.0);
double total=Math.sqrt((deltaRed+deltaBlue+deltaGreen)/3.0);
return total;
}
Color color = nameCell.getCellFormat().getFont().getColor();
if(distance(color,Color.BLACK) < 0.02)
options = "0";
else
options = "1";
rgb(1,0,0) 是很深的灰色!
尝试
if (r <2 && g < 2 && b < 2) ....