如何有效地从URL解码缩放的位图

问题描述 投票:0回答:2

我正在设计一个应用程序,该应用程序必须处理来自服务器的大尺寸的大量位图。有解码的方法

选项1:

  1. 从图像URL创建缓冲的输入流
  2. 仅解码边界
  3. 创建比例因子/样本大小
  4. 创建一个缓冲的输入流(同样,由于解码完成后,bitmapfactory将关闭该流)
  5. 解码位图

选项2

  1. 从图像URL创建缓冲的输入流
  2. 以原始大小解码位图
  3. 使用bitmap.createScaledBitmap创建所需的大小。

使用选项1,我们需要两次下载位图,而与选项2一样,我们必须显式回收原始大小的位图,这将触发垃圾回收,这是CPU密集的操作。

还有其他方法可以有效地实现这一目标吗?

android bitmap bitmapfactory
2个回答
1
投票

选项3:

  1. 将文件下载到本地文件系统
  2. 使用选项1

ps。选项2最终将使您的内存溢出。强烈不推荐。


0
投票

尝试使用inJustDecodeBounds。将其设置为TRUE并按原样加载文件。

图像将不会加载到内存中。但是BitmapFactory.Options的outheight和outwidth属性将包含指定图像的实际大小参数。计算您要对它进行二次采样的数量。例如1/2或1/4或1/8等,并相应地将2/4/8等分配给inSampleSize。

现在将inJustDecodeBounds设置为FALSE,并调用BitmapFactory.decodeFile()以加载与上述计算的大小相同的图像。

© www.soinside.com 2019 - 2024. All rights reserved.