java 缓冲图像 : Detecting black pixels

标签 java rgb bufferedimage bmp

我有这个简单的代码来处理一个 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) 进行测试。这是正确的吗? 提前致谢。

最佳答案

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

附录:查看您的更新,我认为您希望将 ((pixel & 0x00FFFFFF) == 0) 作为谓词。

关于java 缓冲图像 : Detecting black pixels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3539670/

相关文章:

java - 使用 bufferedimage java 设置图像 src

java - 程序在 Thread.sleep() 期间和计时器卡住

java - Cassandra + Java Spring 连接问题

java - 如何扩展一个共同基础的多个后代?

python - skimage 将 RGB 转换为 HSV 时如何获得正确的颜色。了解色调

c++ - Blackmagic 帧 : convert from yuv to RGB to use in openCV

java - 如何在 GFlot 中使用十字准线

JavaFX 测试在 Windows 中失败,但在 OSX 和 Linux 中工作

python - 将 RGB 图像转换为黑白图像

java - Java 中的可缩放图像