Java/ImageIO在不读取整个文件的情况下获取图像维度?

Java/ImageIO在不读取整个文件的情况下获取图像维度?,java,image,dimensions,javax.imageio,Java,Image,Dimensions,Javax.imageio,有没有一种方法可以在不读取整个文件的情况下获取图像的尺寸 URL url=new URL(<BIG_IMAGE_URL>); BufferedImage img=ImageIO.read(url); System.out.println(img.getWidth()+" "+img.getHeight()); img=null; 你得调查一下。不幸的是,Java图像API根本不容易使用 您可以在的包文档中找到元数据格式的说明 有一些第三方库更易于使用,比如上次3年前更新的,但对我来

有没有一种方法可以在不读取整个文件的情况下获取图像的尺寸

URL url=new URL(<BIG_IMAGE_URL>);
BufferedImage img=ImageIO.read(url);
System.out.println(img.getWidth()+" "+img.getHeight());
img=null;
你得调查一下。不幸的是,Java图像API根本不容易使用

您可以在的包文档中找到元数据格式的说明

有一些第三方库更易于使用,比如上次3年前更新的,但对我来说效果很好。

使用并且通常只读取我正在查看的JDK6源文件的图像标题。因此,这很可能是最好的选择

try(ImageInputStream in = ImageIO.createImageInputStream(resourceFile)){
    final Iterator<ImageReader> readers = ImageIO.getImageReaders(in);
    if (readers.hasNext()) {
        ImageReader reader = readers.next();
        try {
            reader.setInput(in);
            return new Dimension(reader.getWidth(0), reader.getHeight(0));
        } finally {
            reader.dispose();
        }
    }
} 

感谢Sfussenger的建议

您是否尝试过截断图像内容,只是将图像的一小部分(例如10kb)传递给ImageIO.read?可能是Awesome的副本。。。你的密码对我来说很好。我尝试了一些代码,但在某些用例中这些代码失败了。你节省了我的时间。。。谢谢。本文给出的代码在Eclipse中发出了一个警告:迭代器是原始类型。对泛型类型迭代器的引用应该参数化。Eclipse提供的补救选项:在文件Ctrl+2中重命名,R直接访问,将类型参数添加到“迭代器”,推断泛型类型参数…,将@SuppressWarnings“unchecked”添加到“methodNameHere”。语法上正确的修复方法是什么?代码段也没有提到使用代码所需的类引用。来自Eclipse,似乎是:import javax.imageio.imageio;导入javax.imageio.ImageReader;导入javax.imageio.stream.ImageInputStream@萨姆·巴纳姆。如何在不下载整个图像的情况下获取参数“resourceFile”?OP以一个任意URL开始,而不是一个文件。@EL它接受一个文件、可读的随机访问文件或输入流