1) In java le immagini raster si memorizzano in oggetti di classe "BufferedImage". Alcuni esempi di oggetti di tipo BufferedImage si trovano nelle classi: Colori.java SliderBox.java Histogram.java 2) La creazione di un immagine vuota e' piuttosto complicata, in quanto la loro codifica in memoria dipende dal sistema operativo in cui la Java Virtual Machine sta girando. E' pero' molto semplice caricare un'immagine in un oggetto di classe BufferedImage. Esiste infatti una classe chiamata "ImageIO". In particolare il metodo read() di questa classe prende in input un percorso o un oggetto di tipo file, e restituisce un oggetto di tipo BufferedImage. Un esempio si trova nella classe: SliderBox.java con la linea: img = ImageIO.read(fc.getSelectedFile()); 3) le dimensioni delle immagini si leggono con i metodi: .getHeight() e .getWidth(). Il pixel alle coordinate x,y si legge col metodo .getRGB(x, y). Esempi di questi si trovano in: Histogram.java ImageProcessor.java con le linee: for(y = 0; y < img.getHeight(); y++) { for(x = 0; x < img.getWidth(); x++) { int col = img.getRGB(x, y); // Preleva le componenti RGB ... } } 4) I pixel vengono codificati in un intero a 32 bit in formato ARGB: aaaaaaaarrrrrrrrggggggggbbbbbbbb Per trasformarlo in valori RGB tra 0 ed 1 double R = ((double)((col >> 16) & 0xff)) / 255.0; double G = ((double)((col >> 8) & 0xff)) / 255.0; double B = ((double)(col & 0xff)) / 255.0; Esempi di questo si trovano in: Histogram.java ImageProcessor.java 5) Allo stesso modo i valori possono essere riportati da numeri tra 0 ed 1 in un valore a 32 bit, con un codice del tipo: int newCol = (((int)Math.round(nc.R * 255)) << 16) | (((int)Math.round(nc.G * 255)) << 8) | ((int)Math.round(nc.B * 255)); I pixel possono poi essere modificati nell'immagine utilizzando il metodo .setRGB(x, y, col), con istruzini del tipo: img.setRGB(x, y, newCol); Esempi di questi si trovano in: ImageProcessor.java