Ciao a tutti,
ho un problema con la gestione delle immagini. In particolare, ho una GUI che visualizza un'immagine. Vorrei che quando il mouse si muove sull'immagine, venga letto il valore del byte corrispondente al pixel. Dico byte perchè si tratta di un immagine in scala di grigi quindi se non sbaglio dovrebbe trattarsi di 8bit per pixel.purtroppo non vengono visualizzati i valori che mi aspetto (compresi tra 0-255). Ecco il codice
Dopo l'ultimo ciclo for() mi aspetto di ottenere dei valori compresi tra 0-255 ma non è cosìcodice:BufferedImage image = ImageIO.read(file); DataBufferByte dbb = (DataBufferByte)image.getRaster().getDataBuffer(); byte pixels[] = dbb.getData(); int map_pixels[] = new int[pixels.length]; for(int i=0;i<map_pixels.length;i++) map_pixels[i] = pixels[i] & 0xFF; // unsignedInt = signedByte & 0xFF; for(int i=0;i<pixels.length;i++) pixels[i] = (byte) map_pixels[i]; //unsignedByte = (byte) unsignedInt
Per muovermi sull'array pixels[] uso questo codice
incremento la coordinata perchè la prima scanline corrisponde a (0,y)..Mentre per la prima colonna (x,0)..codice:int posy = coordinatay++; int posx = coordinatax ++; int indice_array = posy*posx; System.out.println(pixels[indice_array]);

Rispondi quotando