我正在寻找下载位图数组的最佳方法,稍微修改一下然后保存到SD卡。
我听说使用ByteArrayOutputStream
是一个坏主意,因为它会将图像加载到设备的RAM中。相反,我可能应该使用BufferedInputStream
和FileOutputStream
之类的东西,但是我不知道如何在使用此方法保存位图之前更改位图。
由于
答案 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()
以尽快释放记忆。