Android 图片过大导致的OOM异常解决方案

原文链接:http://www.ytsyt.cn/post/7.html

先转载收藏!

手机的拍照像素越来越高,拍出来的照片效果也会越来越好,但是像素高了照片的容量也就变大了,如果不能处理好bitmap的话很容易导致OOM异常的。以下提供3种解决OOM异常的方案: 

一、bitmap不用就就回收掉 

Java protected void onDestroy() { 

      super.onDestroy();

      if(bmp1 != null){ 

            bmp1.recycle(); 

             bmp1 = null;

        } 

        if(bmp2 != null){

              bmp2.recycle();

              bmp2 = null;

         }

 } 

二、先算出该bitmap的大小,然后通过调节采样率的方式来规避,也就是等比例压缩 

Java BitmapFactory.Options opts = new BitmapFactory.Options(); 

opts.inJustDecodeBounds = true; 

BitmapFactory.decodeFile(imageFile, opts);

 opts.inSampleSize = computeSampleSize(opts, minSideLength, maxNumOfPixels); 

opts.inJustDecodeBounds = false; 

try { 

         return BitmapFactory.decodeFile(imageFile, opts); 

} catch (OutOfMemoryError err) { }

 return null;

 三、在进行文件传输时,最好采用压缩的方式变成byte[]再传输 

Java public static byte[] bitmap2Bytes(Bitmap bm) { 

         ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

         bm.compress(Bitmap.CompressFormat.JPEG, 90, baos); 

         return baos.toByteArray();

 }

你可能感兴趣的:(Android 图片过大导致的OOM异常解决方案)