通过BitmapFactory.decodeByteArray把byte[]转成Bitmap出现的OOM的解决方法
Posted 优雅的心情
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过BitmapFactory.decodeByteArray把byte[]转成Bitmap出现的OOM的解决方法相关的知识,希望对你有一定的参考价值。
使用Bitmap mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length)来转成Bitmap的时候,老报OOM,在网上也找了很多关于优化OOM的方法。
最后,采用了以下方法后,再也没有报OOM了
- public static Bitmap byteToBitmap(byte[] imgByte)
- InputStream input = null;
- Bitmap bitmap = null;
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inSampleSize = 8;
- input = new ByteArrayInputStream(imgByte);
- SoftReference softRef = new SoftReference(BitmapFactory.decodeStream(
- input, null, options));
- bitmap = (Bitmap) softRef.get();
- if (imgByte != null)
- imgByte = null;
- try
- if (input != null)
- input.close();
- catch (IOException e)
- // TODO Auto-generated catch block
- e.printStackTrace();
- return bitmap;
以上是关于通过BitmapFactory.decodeByteArray把byte[]转成Bitmap出现的OOM的解决方法的主要内容,如果未能解决你的问题,请参考以下文章
java是通过值传递,也就是通过拷贝传递——通过方法操作不同类型的变量加深理解