簡體   English   中英

Java/ImageIO 在不讀取整個文件的情況下獲取圖像尺寸?

[英]Java/ImageIO getting image dimensions without reading the entire file?

有沒有辦法在不讀取整個文件的情況下獲取圖像的尺寸?

URL url=new URL(<BIG_IMAGE_URL>);
BufferedImage img=ImageIO.read(url);
System.out.println(img.getWidth()+" "+img.getHeight());
img=null;
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();
        }
    }
} 

感謝 sfussenegger 的建議

使用ImageReader.getHeight(int)ImageReader.getWidth(int)通常只讀取圖像標題(我正在查看 JDK6 源代碼)。 所以ImageReader很可能是最好的選擇。

您必須查看ImageReader.getImageMetadata() 不幸的是,Java Image API 並不容易使用。

您可以在javax.imageio.metadata的包文檔中找到元數據格式的描述。

有一些更易於使用的第三方庫,例如MediaUtil (上次更新是 3 年前,但對我來說效果很好)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM