使用非null InputStream创建后,Image为null

时间:2014-04-10 10:08:02

标签: java inputstream bufferedimage

我有以下代码:

public BufferedImage inputStreamToImage (InputStream stream) {        

    BufferedImage image = null;

    if (stream != null ) {

        try {
            image = ImageIO.read(stream);
            // image is still null here <--
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }
    }

    return image;
}

我测试InputStream是否为null,而不是。然后我从InputStream创建一个新的BufferedImage。再没有什么问题,代码执行就像它正在工作。但是当我尝试使用图像时它是空的。换句话说,在“成功”创建之后我测试图像并且它是空的。

修改

我通过html表单上传.tif文件,如下所示:

<form action="webresources/read" method="post" enctype="multipart/form-data">

    <p>
    Select a file : <input type="file" name="file" id="file" />
    </p>

    <input type="submit" value="Upload It" />

</form>

有任何帮助吗?在此先感谢:)

3 个答案:

答案 0 :(得分:2)

来自javadoc

  

如果没有已注册的ImageReader声称能够读取生成的流,则返回null。

InputStream可能完全包含可读图像。

答案 1 :(得分:1)

啊!所以..原因是ImageIO.read()不支持.tif图像。我尝试使用.jpg,它工作正常。

答案 2 :(得分:0)

是否可能在ImageIO的文档中声明了以下情况 - “InputStream包含在ImageInputStream中。如果没有注册的ImageReader声称能够读取生成的流,则返回null。”?