2010-12-27 17 views
4

Ich versuche, eine BufferedImage von einem ByteArrayInputStream zu schaffen, mit:Java Fehler beim Erstellen BufferedImage von ByteArrayInputStream

byte[] imageData = getData(imageFile); // returns file as byte[] 

    InputStream inputStream = new ByteArrayInputStream(imageData); 
    String format = getFormatName(inputStream); 

    BufferedImage img = ImageIO.read(inputStream); 

Aber img ist immer null. Der Eingabestream ist gültig (da ich ihn vorher benutze, um das Bildformat zu erhalten). Was könnte dazu führen, dass ImageIO null zurückgibt? Muss ich an irgendeiner Stelle bündig oder geschlossen sein?

Antwort

5

Ihr Anruf an getFormatNameverbraucht den inputStream, so dass der Streamzeiger am Ende des Bytearrays liegt. Jeder Versuch, aus diesem Stream zu lesen, zeigt an, dass er am Ende der 'Datei' steht. Sie müssen den Stream zurücksetzen (oder einen neuen erstellen), bevor Sie ihn an die ImageIO.read() -Methode übergeben:

String format = getFormatName(new ByteArrayInputStream(imageData)); 
BufferedImage img = ImageIO.read(new ByteArrayInputStream(imageData));