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