如何在Java中获取图像文件(BufferedImage)的格式(例如:jpen、png、gif)

9

我想使用Java获取图像的缓冲区图像格式或类型。

 InputStream stream = request.getResponseStream();   
 BufferedImage image=  ImageIO.read(stream);
 LOGGER.info(image);

你想要能够检查格式吗?(例如:jpeg png bmp) - John
2个回答

15

请参考javax.imageio.ImageIO.read()代码

这段代码最初是用Groovy实现的,但已经翻译成Java,所以可能存在语法错误。

public String read(InputStream input) throws IOException {
    ImageInputStream stream = ImageIO.createImageInputStream(input);

    Iterator iter = ImageIO.getImageReaders(stream);
    if (!iter.hasNext()) {
        return null;
    }
    ImageReader reader = (ImageReader) iter.next();
    ImageReadParam param = reader.getDefaultReadParam();
    reader.setInput(stream, true, true);
    BufferedImage bi;
    try {
        bi = reader.read(0, param);
        return reader.getFormatName();
    } finally {
        reader.dispose();
        stream.close();
    }
}

-2
这段代码可能会帮助你获取图像的扩展名。
public static String getFormate(String ImageName) {

    return (ImageName.substring(ImageName.indexOf('.'),ImageName.length()));
}

在上述代码中,首先搜索点(.),再使用substring()函数返回文件扩展名。

1
你得到了很多踩因为没有提供从InputStream获取“ImageName”的解释。实际上,这是没有解决方案的。 - ruX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接