繁体   English   中英

在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()给出了黑色的描述。

如何找到Colour.BLACKnameCell.getCellFormat().getFont().getColour()这两个对象中常见的“黑色”?

您需要一种比较Java中颜色的方法。

您可以在此处找到相关信息: 如何比较Java中的颜色?

无论如何:

  1. 您需要比较相等性而不是相等性,因此: color == Color.BLACK必须转换为Color.BLACK.equals(color)

  2. 由于需要进行近似比较,因此需要一种方法来计算颜色之间的距离并将其强制为(由实验确定)的值。

这是一个例子:

 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) ....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM