Java / ImageIO获取图像尺寸而不读取整个文件?

有没有一种方法可以获取图像尺寸而无需读取整个文件?


URL url=new URL(<BIG_IMAGE_URL>);

BufferedImage img=ImageIO.read(url);

System.out.println(img.getWidth()+" "+img.getHeight());

img=null;


摇曳的蔷薇
浏览 761回答 3
3回答

倚天杖

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

守候你守候我

使用ImageReader.getHeight(int)和ImageReader.getWidth(int)通常仅读取图像标头(我在看JDK6源代码)。因此,ImageReader很可能是最佳选择。

函数式编程

您必须调查一下ImageReader.getImageMetadata()。不幸的是,Java Image API根本不易于使用。您可以在的软件包文档中找到元数据格式的说明javax.imageio.metadata。有一些更易于使用的第三方库,例如MediaUtil(最近更新3年,但对我来说效果很好)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java