2010-08-22 28 views
8

que tienen este código simple que pasar por un archivo bmp ventanas de color de 24 bitsjava con buffer de imagen: La detección de píxeles negros

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); 
    } 
    } 
} 

Sin embargo, cuando se prueba en una imagen completamente negro, consigo este valor en el píxel: -16777216.

Esperaba obtener un 0x0.

¿Cómo puedo probar los píxeles negros (o cualquier otro color por ese motivo)?

actualización

prueba Im contra ((pixel & 0xff) == 0). ¿Es esto correcto? Gracias de antemano.

Respuesta

10

-16777216 es 0xFF000000 en hexadecimal, lo que corresponde a opaque negro.

Adición: En cuanto a su actualización, creo que quiere ((pixel & 0x00FFFFFF) == 0) como su predicado.

+0

Muchas gracias. – Tom

Cuestiones relacionadas