Wenn eine Anwendung weitere Funktionalität benötigt, können bei
Bedarf weitere Klassen des API verwendet werden.
So ist es z. B. möglich, nicht direkt auf das Bild zuzugreifen, sondern
sich eine Liste von »Lese«-Objekten bzw. »Schreib«-Objekten geben zu lassen,
wie folgendes Beispiel zeigt:
Iterator iter = ImageIO.getImageReadersByFormatName("png");
ImageReader in = (ImageReader)iter.next();
Die Methode getImageReadersByFormatName() liefert
einen Iterator von ImageReader-Exemplaren
zurück, die in der
Lage sind, das gewünschte Format zu lesen. Ein ImageReader führt
nur die Konvertierung durch, hat aber selbst zu diesem Zeitpunkt noch keine
Verknüpfung zu einer Bilddatei. Die Methode liefert deshalb eine Menge
an ImageReader-Exemplaren zurück, da durch die Plug-in-Architektur
prinzipiell mehrere installierte Module in der Lage sein können, das angeforderte
Format zu lesen.
ImageReader in;
...
File file = new File("c:\\test.gif");
ImageInputStream imgin = ImageIO.createImageInputStream(file);
in.setInput(imgin);
Die
Verknüpfung zur Bilddatei wird anschließend über die Methode
setInput() durchgeführt. Als Pararameter
erwartet die Methode ein Exemplar vom Typ ImageInputStream, das
über die Methode createImageInputStream() erzeugt wird.
Nun kann man damit beginnen, über die Methoden des
ImageReader-Exemplars
Informationen über das Bild abzufragen. Durch Aufruf der Methode
read() wird z. B. das Bild geladen, analog zum Aufruf
von ImageIO.read().