2

我正在阅读图像并想要获取图像格式。

private static String getFormatName(Object o) {
try {
    // Create an image input stream on the image
    ImageInputStream iis = ImageIO.createImageInputStream(o);

    // Find all image readers that recognize the image format
    Iterator<ImageReader> iter = ImageIO.getImageReaders(iis);
    if (!iter.hasNext()) {
        // No readers found
        return null;
    }

    // Use the first reader
    ImageReader reader = (ImageReader)iter.next();

    String name = reader.getFormatName();
    iis.close();
    return name;
} catch (IOException e) {
}
// The image could not be read
return null;

}

当我执行它时,我得到以下异常,

java.lang.IllegalArgumentException: image == null!
4

2 回答 2

3

更新:您还需要调用 setInput()

您无法关闭流。当您这样做时,读者将如何阅读图像?请执行下列操作:

reader.setInput(iis);
String name = reader.getFormatName();
iis.close();
return name;
于 2012-07-11T05:34:20.060 回答
1

在读者有机会阅读格式之前,您正在关闭流。

所以语句的顺序是:

reader.getFormatName();
iis.close();
return name;
于 2012-07-11T05:37:47.983 回答