2010-08-22 15 views
8

ho questo semplice codice di passare attraverso un finestre di colore a 24 bit di file bmpjava Buffered immagine: Rilevazione pixel neri

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

Tuttavia, quando si verifica su un'immagine completamente nera, ottengo questo valore a pixel: -16777216.

Speravo di ottenere un 0x0.

Come è possibile verificare i pixel neri (o qualsiasi altro colore per tale motivo)?

aggiornamento

Im test contro ((pixel & 0xff) == 0). È giusto? Grazie in anticipo.

risposta

10

-16777216 è 0xFF000000 in esadecimale, corrispondente al nero opaco.

Addendum: osservando il tuo aggiornamento, direi che vuoi il ((pixel & 0x00FFFFFF) == 0) come tuo predicato.

+0

Grazie mille. – Tom