java Буферизованное изображение: обнаружение черных пикселей

У меня есть этот простой код для прохождения 24-битного файла цветных окон 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.

Как я могу проверить черные пиксели (или любой другой цвет по этой причине)?

update

Я проверяю по ((pixel & 0xff) = = 0) . Это правильно? Заранее спасибо.

8
задан Tom 22 August 2010 в 00:58
поделиться

1 ответ

-16777216 - это 0xFF000000 в шестнадцатеричной системе счисления, что соответствует непрозрачному черному цвету.

Приложение: глядя на ваше обновление, я бы подумал, что вы хотите ((pixel & 0x00FFFFFF) == 0) в качестве предиката.

10
ответ дан 5 December 2019 в 17:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: