【发布时间】:2011-12-18 23:30:54
【问题描述】:
我正在从 Internet 下载图像,然后将它们按比例显示在屏幕上。这个想法是使用 inSampleSize,这样我就可以在解压缩时缩放大图像并防止 OutOfMemory 异常。但是为了找到 inSampleSize 我需要知道图像分辨率。它可以使用 inJustDecodeBounds 选项获得。
问题是我无法将流传递给它并直接从互联网下载图像,因为它将被下载两次(首先获取大小,然后获取缩放位图)。我无法下载图像并将其存储在 RAM 中,因为图像大小可能很大。剩下的唯一解决方案是将图像下载到 SD 卡/内部存储器并从那里读取,但是当用户没有空间时,就会发生坏事。
问题是 - 有没有什么方法可以在不依赖存储和 RAM 内存的情况下做到这一点,而无需下载两次图像?或者 BitmapFactory 在使用 inJustDecodeBounds 时不会下载整个图像,而只是下载标题?
谢谢
【问题讨论】:
-
ram 和 sd 的替代品?嗯......除了玩笑之外认为它非常标准的下载机制,不知道 bitmapfactory 但希望它的行为相似。总而言之,我不明白为什么这会成为一个问题。你不能只检查是否有空间,如果没有,你就不能允许下载。
-
检查是否有更好的方法总是值得的。如果可以在不下载整个文件的情况下获得图像大小,那么这种机制将更加可靠。
-
同意 :) 但你仍然会有记忆问题......如果有两次图片是一个问题,为什么不会一次呢?我只是无法理解这个问题:)
-
有两次图片不是问题,下载两次就可以了。
-
啊,现在我明白你的问题了;)嗯,第一个答案建议阅读标题。但是我认为很难从您要下载的文件中仅减去标题(尽管可能)
标签: android bitmap resolution out-of-memory bitmapfactory