У меня есть этот простой код для прохождения 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.
Как я могу проверить черные пиксели (или любой другой цвет по этой причине)?
Я проверяю по ((pixel & 0xff) = = 0)
. Это правильно?
Заранее спасибо.
-16777216
- это 0xFF000000
в шестнадцатеричной системе счисления, что соответствует непрозрачному черному цвету.
Приложение: глядя на ваше обновление, я бы подумал, что вы хотите ((pixel & 0x00FFFFFF) == 0)
в качестве предиката.