0

我正在从互联网上下载图像,然后将它们按比例显示在屏幕上。这个想法是使用 inSampleSize,这样我就可以在解压缩时缩放大图像并防止 OutOfMemory 异常。但是为了找到 inSampleSize 我需要知道图像分辨率。它可以使用 inJustDecodeBounds 选项获得。

问题是我无法将流传递给它并直接从互联网下载图像,因为它将被下载两次(首先获取大小,然后获取缩放的位图)。我无法下载图像并将其存储在 RAM 中,因为图像大小可能很大。剩下的唯一解决方案是将图像下载到 SD 卡/内部存储器并从那里读取,但是当用户没有空间时,就会发生坏事。

问题是 - 有什么方法可以做到这一点而不依赖于不需要下载两次图像的存储和 RAM 内存?或者,BitmapFactory 在使用 inJustDecodeBounds 时可能不会下载整个图像,而只是标题?

谢谢

4

1 回答 1

1

如果您正在下载 PNG、GIF 或 JPG,则应该可以读取文件标题以确定宽度和高度,这意味着您不必下载整个文件。

这篇文章有一些 C# 代码,用于从标题中读取上述格式的宽度和高度,您可以将其移植到 Java 以在 Android 中使用。

于 2011-10-31T19:27:47.020 回答