android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法
生活随笔
收集整理的這篇文章主要介紹了
android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
android通過BitmapFactory.decodeFile獲取圖片bitmap報內(nèi)存溢出的解決辦法
原方法:
public static Bitmap getSmallBitmap(String filePath, int reqWidth, int reqHeight) {final BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;BitmapFactory.decodeFile(filePath, options);// Calculate inSampleSizeoptions.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);// Decode bitmap with inSampleSize setoptions.inJustDecodeBounds = false;return BitmapFactory.decodeFile(filePath, options);}異常:
06-23 11:41:04.817 24959-24959/com.test.tax E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.test.tax, PID: 24959java.lang.OutOfMemoryErrorat android.graphics.BitmapFactory.nativeDecodeStream(Native Method)at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:623)at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:599)at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:378)at com.test.tax.utils.PictureUtils.getSmallBitmap(PictureUtils.java:138)at com.test.tax.utils.PictureUtils.bitmapToFile(PictureUtils.java:58)at com.test.tax.utils.localalbum.ui.LocalAlbum.onActivityResult(LocalAlbum.java:141)at android.app.Activity.dispatchActivityResult(Activity.java:5441)at android.app.ActivityThread.deliverResults(ActivityThread.java:3353)at android.app.ActivityThread.handleSendResult(ActivityThread.java:3400)at android.app.ActivityThread.access$1300(ActivityThread.java:141)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1250)at android.os.Handler.dispatchMessage(Handler.java:102)at android.os.Looper.loop(Looper.java:136)at android.app.ActivityThread.main(ActivityThread.java:5047)at java.lang.reflect.Method.invokeNative(Native Method)at java.lang.reflect.Method.invoke(Method.java:515)at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)at dalvik.system.NativeStart.main(Native Method)解決辦法:
通過設(shè)置BitmapFactory.Options屬性解決
options.inPreferredConfig = Bitmap.Config.RGB_565;options.inDither = true;解決后的方法:
public static Bitmap getSmallBitmap(String filePath, int reqWidth, int reqHeight) {final BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;BitmapFactory.decodeFile(filePath, options);// Calculate inSampleSizeoptions.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);// Decode bitmap with inSampleSize setoptions.inJustDecodeBounds = false;//避免出現(xiàn)內(nèi)存溢出的情況,進行相應(yīng)的屬性設(shè)置。options.inPreferredConfig = Bitmap.Config.RGB_565;options.inDither = true;return BitmapFactory.decodeFile(filePath, options);}?
總結(jié)
以上是生活随笔為你收集整理的android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: swift 用协议实现代理传值功能
- 下一篇: 寻找最长公共前缀