如何在不耗尽内存的情况下下载位图并保存到SD卡?

时间:2011-08-03 11:26:11

标签: android download bitmap android-3.0-honeycomb bufferedinputstream

我正在寻找下载位图数组的最佳方法,稍微修改一下然后保存到SD卡。

我听说使用ByteArrayOutputStream是一个坏主意,因为它会将图像加载到设备的RAM中。相反,我可能应该使用BufferedInputStreamFileOutputStream之类的东西,但是我不知道如何在使用此方法保存位图之前更改位图。

由于

2 个答案:

答案 0 :(得分:1)

您可以使用以下内容从InputStream创建位图:

Bitmap bm = BitmapFactory.decodeStream(inputStream);

然后在处理完Bitmap并存储它们之后,您必须使用:

bm.recycle();
bm = null;

避免OutOfMemoryExceptions

修改

将其写入文件:

OutputStream fos=new BufferedOutputStream(new FileOutputStream(filePath));
byte buf[]=new byte[1024];
int len;
while((len=is.read(buf))>0)
    fos.write(buf,0,len);
fos.close();
is.close();

答案 1 :(得分:1)

你不会喜欢这个答案:你不能(至少不能使用Android框架)。

唯一的选择是downscale the image,以便它适合记忆;并定期致电recycle()System.gc()以尽快释放记忆。