有没有一种方法可以在不读取整个文件的情况下获得图像的尺寸?
URL url=new URL(<BIG_IMAGE_URL>);
BufferedImage img=ImageIO.read(url);
System.out.println(img.getWidth()+" "+img.getHeight());
img=null;
发布于 2009-10-13 20:55:18
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的建议
发布于 2009-10-13 10:23:33
使用ImageReader.getHeight(int)和ImageReader.getWidth(int)通常只读取图像标题(我正在查看JDK6源代码)。所以ImageReader很可能是最好的选择。
发布于 2009-10-13 10:17:48
你得去调查一下ImageReader.getImageMetadata()
。不幸的是,Java Image API一点也不容易使用。
您可以在javax.imageio.metadata
的包文档中找到元数据格式的说明。
有更容易使用的第三方库,例如MediaUtil (最近一次更新是在3年前,但它对我来说工作得很好)。
https://stackoverflow.com/questions/1559253
复制相似问题