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