0

我正在寻找下载位图数组的最佳方法,对其进行一些修改,然后保存到 SD 卡中。

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

谢谢

4

2 回答 2

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();
于 2011-08-03T11:41:47.343 回答
1

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

唯一的选择是缩小图像以使其适合内存;并定期调用recycle()System.gc()尽快释放内存。

于 2011-08-03T16:42:39.670 回答