通过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;
- }