[英]Verify sane image dimensions in Java without ImageMagick or 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.