immagini in Java ingredienti fondamentali e tecniche di base generalità array bidimensionali di pixel rettangolari, ciascun pixel ha un colore classe più importante per la rappresentazione di immagini: java.awt.image.BufferedImage aprile 2009 gli oggetti BufferedImage rappresentano le immagini esplicitamente in memoria le applicazioni possono creare BufferedImage od ottenerle da file esterni (PNG, GIF ecc.) immagini raster in Java le applicazioni possono disegnare su immagini costruite o caricate 2 classi Java BufferedImage, Image i metodi di renderizzazione (nella classe Graphics2D) lavorano su Image Image è superclasse di BufferedImage e quindi anche su BufferedImage, grazie all'ereditarietà ogni BufferedImage ha un aprile 2009 ColorModel Raster di datiimmagini pittorici raster in Java 3 operazioni fondamentali 1)lettura di immagini da file esterni con supporto per vari formati raster 2)visualizzazione di immagini 3)creazione di immagini e loro uso come superficie di disegno 4)salvataggio immagini su file aprile 2009 con supporto per vari formati raster immagini raster in Java 4 lettura di immagini servizi basati sul package javax.imageio supporto per GIF, PNG, JPEG, BMP e WBMP estendibile ad altri formati come TIFF o JPEG2000 esempio lettura BufferedImage img = null; try { img = ImageIO.read(new aprile 2009 immagini raster in Java File("strawberry.jpg")); } catch (IOException e) { 5 metodo ImageIO.read(.) public static BufferedImage read(File input) l'oggetto File (package java.io) può essere facilmente creato dal nome del file (new File("strawberry.jpg")) il formato del file viene riconosciuto automaticamente overloaded restituisce riferimento a un (nuovo) oggetto BufferedImage contenente l'immagine letta aprile 2009 immagini raster in Java lancia eccezioni se input è null o se si verifica un errore nell'accesso al file 6 visualizzazione di immagini si usa il metodo drawImage(.) della classe Graphics (overloaded) public boolean drawImage(Image img, int x, int y, ImageObserver observer) public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer) aprile 2009 posizionamento e rendering 1:1 posizionamento e rendering scalato immagini raster in Java observer normalmente posto a null (l'uso è 7 filtri nella visualizzazione di immagini è possibile utilizzare filtri un filtro è un algoritmo che viene applicato ai pixel di un'immagine data per produrne una variazione metodo drawImage(BufferedImage img, BufferedImageOp op, int x, int y) di Graphics2D il filtro è descritto dall'oggetto di tipo immagini raster in Java BufferedImageOp aprile 2009 per approfondimenti si veda il tutorial 8 salvataggio di immagini simile al caricamento package javax.imageio esempio salvataggio in PNG try { File outputfile = new File("saved.png"); ImageIO.write(<immagine>, "png", outputfile); } catch (IOException e) } aprile 2009 immagini raster in Java 9 metodo ImageIO.write(.) public static boolean write(RenderedImage im, String formatName, File output) salva l'immagine nel formato specificato dalla stringa aprile 2009 RenderedImage è una interface implementata da BufferedImage formati supportati: JPEG, PNG, GIF, BMP e WBMP restituisce false se il formato specificato è raster supportato in Java sconosciuto immagini o non lancia eccezioni con parametri/o null o se la 10