2012-03-27 6 views
0

Wie wird setInput von ImageReader Klasse aufgerufen?
Unten ist mein Code:wie SetInput() der ImageReader-Klasse aufgerufen werden?

ImageInputStream iis = ImageIO.createImageInputStream(newByteArrayInputStream(cipherData));  
Iterator<ImageReader> readers=ImageIO.getImageReaders(iis); 
Iterator<ImageReader> readers=ImageIO.getImageReaders(iis); 
System.out.println("readers="+readers); 
+0

@assylias Ich habe die Frage bearbeitet. – shree

+0

Versuchen Sie, Iteratoren so zu codieren, wie sie sind: Verwenden Sie 'hasNext()' und 'next()', um die nächste 'ImageReader'-Instanz von Lesern zu erhalten; Verwenden Sie diese Instanz für den Zugriff auf 'setInput()' – ecle

Antwort

1

Wenn Sie auf den ImageReader s die Methode bedeuten Aufruf Variable in Ihre Leser enthalten ist, könnten Sie eine Schleife über sie:

for (Iterator<ImageReader> it=ImageIO.getImageReaders(iis); it.hasNext();) { 
    ImageReader reader = it.next(); 
    readers.setInput(someObject); 
} 

EDIT

Wenn Sie nur das erste Element möchten:

Iterator<ImageReader> it=ImageIO.getImageReaders(iis); 
ImageReader reader = null; 
if (it.hasNext()) { 
    reader = it.next(); 
} 
//you probably want to check for null here to make sure there was one element 
+0

Angenommen, es gibt nur ein Element und es besteht keine Notwendigkeit für eine Schleife. Dann, was wird der Code sein – shree

+0

@shree ImageIO.getImageReaders() immer einen Iterator zurückgeben. Es muss weiterhin hasNext sein, um nach einem leeren Iterator zu suchen (es bedeutet keinen geeigneten Bildleser zum Dekodieren des Bildes). Iterator gibt normalerweise size() oder length() zurück, um zu sagen, wie viele geeignete ImageReader es bekommen kann. Aber einige Iteratoren wurden außer Kraft gesetzt, um diese Art von Wissen (in einer Sammlung) zu liefern und ihr beabsichtigtes Design zu brechen. http://www.coderanch.com/t/408364/java/java/Find-size-Iterator-thing oder http://stackoverflow.com/questions/9720195/what-ist-the-best-way-to- get-the-count-länge-größe-eines-iterators – ecle

+0

@assylias danke für ihre zusammenarbeit – shree