代码之家  ›  专栏  ›  技术社区  ›  Tom

java缓冲图像:检测黑色像素

  •  8
  • Tom  · 技术社区  · 14 年前

    我有这个简单的代码,通过一个24位彩色windows bmp文件

    BufferedImage mapa = BMPDecoder.read(new File("maps/map.bmp"));
        
    final int xmin = mapa.getMinX();
    final int ymin = mapa.getMinY();
        
    final int ymax = ymin + mapa.getHeight();
    final int xmax = xmin + mapa.getWidth();
    
    
    for (int i = xmin;i<xmax;i++)
    {
       for (int j = ymin;j<ymax;j++)
       {
                    
        int pixel = mapa.getRGB(i, j);
            
        if (pixel == 0)
        {
            System.out.println("black at "+i+","+j);
        }
       }
    }
    

    但是,在完全黑色的图像上进行测试时,我在像素处得到以下值: -16777216 .

    我希望得到一个0x0。

    我如何测试黑色像素(或任何其他颜色的原因)?

    我在测试 ((pixel & 0xff) == 0) 提前谢谢。

    1 回复  |  直到 4 年前
        1
  •  10
  •   trashgod    14 年前

    -16777216 0xFF000000 十六进制,对应于不透明的黑色。

    ((pixel & 0x00FFFFFF) == 0)