如何在不下载Android中的完整图像的情况下从网址获取图像宽度和高度?

时间:2016-06-09 03:31:51

标签: android image url

Is there any way in Java to take image width and height without transfer or download?

提到使用ImageIO的方法,但Android上没有ImageIO。

Android有BitmapFactory,它可以解码图像以获得宽度和高度,而无需将整个图像加载到内存中,但它只适用于文件。

所以问题出现在Android上,有没有办法在不下载整个图像的情况下从网址获取图像的宽度和高度?

2 个答案:

答案 0 :(得分:0)

不下载图像是不可能的。除非并且直到下载图像,否则无法应用BitmapFactory

答案 1 :(得分:0)

在Java中,使用ImageReader.getHeight(int)和ImageReader.getWidth(int)通常只能读取图像标题,因此不会完全下载图像,不确定它是否可以在Android中运行:

public static Dimension getImageDimensionFromUrl(final URL url)
            throws IOException {

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

        return null;
    }