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 に答える