我正在寻找下载位图数组的最佳方法,对其进行一些修改,然后保存到 SD 卡中。
我听说这ByteArrayOutputStream
是一个坏主意,因为它将图像加载到设备的 RAM 中。相反,我可能应该使用类似 a BufferedInputStream
and的东西FileOutputStream
,但是我不知道如何在使用此方法保存位图之前更改它们。
谢谢
我正在寻找下载位图数组的最佳方法,对其进行一些修改,然后保存到 SD 卡中。
我听说这ByteArrayOutputStream
是一个坏主意,因为它将图像加载到设备的 RAM 中。相反,我可能应该使用类似 a BufferedInputStream
and的东西FileOutputStream
,但是我不知道如何在使用此方法保存位图之前更改它们。
谢谢
您可以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();
你不会喜欢这个答案:你不能(至少,不是 Android 框架)。
唯一的选择是缩小图像以使其适合内存;并定期调用recycle()
并System.gc()
尽快释放内存。