2010-12-27 10 views
4

からBufferedImageを作成:Javaエラーが私がするByteArrayInputStreamからBufferedImageを作成しようとしていますするByteArrayInputStream

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

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

    BufferedImage img = ImageIO.read(inputStream); 

しかし、IMGは常にnullです。入力ストリームは有効です(前に画像フォーマットを取得するために使用しています)。 ImageIOにnullが返される原因は何ですか?どんな場所でもフラッシュやクローズが必要ですか?

答えて

5

getFormatNameを呼び出すと、入力ストリームが消費されるため、ストリームポインタはバイト配列の末尾にあります。そのストリームからの読み取りを試みると、そのファイルの最後にあることがわかります。 ImageIO.read()メソッドに渡す前に、ストリームをリセットする(または新しいストリームを作成する)必要があります。

String format = getFormatName(new ByteArrayInputStream(imageData)); 
BufferedImage img = ImageIO.read(new ByteArrayInputStream(imageData)); 
関連する問題