android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法

  原方法:

    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)

  解决办法:

  通过设置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;//避免出现内存溢出的情况,进行相应的属性设置。options.inPreferredConfig = Bitmap.Config.RGB_565;options.inDither = true;return BitmapFactory.decodeFile(filePath, options);}

android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法相关推荐

  1. Tomcat启动报内存溢出错误解决(两种)

    1.绿色版Tomcat,启动报内存溢出错误:java.lang.OutOfMemoryError: PermGen space异常 找到D:\Tomcat-7\apache-tomcat-7.0.28 ...

  2. java 图片 内存溢出_Java修改图片尺寸,总是报内存溢出怎么解决?

    项目需求:有很多尺寸很大的图片(图片大小可能几十MB,甚至上百MB),需要等比例缩小它们的尺寸,相当于生成缩略图. 例如:原图8268x6201,需要压缩成400x300. 我现在的方法:将图片整个读 ...

  3. java thumbnails 内存_Java修改图片尺寸,总是报内存溢出怎么解决?

    项目需求:有很多尺寸很大的图片(图片大小可能几十MB,甚至上百MB),需要等比例缩小它们的尺寸,相当于生成缩略图. 例如:原图8268x6201,需要压缩成400x300. 我现在的方法:将图片整个读 ...

  4. 在MFC框架下使用osg报内存泄露的解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101/ 最近正在学习osg,从osgchina网站下下载了osg的debug版本库,具体地址为: OpenSceneGrap ...

  5. Android内存泄漏以及解决办法

    Android程序开发中,如果一个对象已经不需要被使用了,本该被回收时,而这时另一个对象还在持有对该对象的引用,这样就会导致无法被GC回收,就会出现内存泄漏的情况. 内存泄漏时Android程序中出现 ...

  6. Android通过网络URL获取图片并显示

    1.布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:to ...

  7. android 根据文件Uri获取图片url

    今天,简单讲讲android里如何通过文件的Uri获取文件的路径url. 昨天,我讲了如何调用手机的文件管理器获取文件资源,但是文件管理器返回的是文件的Uri,我们需要通过Uri获取文件的url才可以 ...

  8. Android之内存泄漏以及解决办法(持更)

    Android之内存泄漏以及解决办法 文章链接:http://blog.csdn.net/qq_16628781/article/details/67761590 知识点: 单例造成的内存泄漏原因和解 ...

  9. Android性能优化之利用强大的LeakCanary检测内存泄漏及解决办法

    本篇文章主要介绍了Android性能优化之利用LeakCanary检测内存泄漏及解决办法,有兴趣的同学可以了解一下. 目录 前言 什么是内存泄漏? 内存泄漏造成什么影响? 什么是LeakCanary? ...

最新文章

  1. 【迁移学习(Transfer L)全面指南】Pytorch处理体积数据
  2. php ppt read_php怎么读取ppt文字内容并在浏览器中显示出来?
  3. Android开发之通过ImageView名称从文件夹拿到ImageView的Drawable对象的方法
  4. “蚂蚁漫步”背后的定位原理思考
  5. Linux 进程间通信(IPC)---大总结
  6. MFC在其他类中访问主窗体的成员
  7. python中下拉菜单大小_请问各位大神如何将下拉菜单的文字设定成一个值?
  8. Audio strage 声音相关
  9. AWT_面板 Panel(Java)
  10. HP P2000 G3阵列故障经历
  11. php商城项目开发视频_ThinkPHP开发大型商城项目实战视频_ThinkPHP商城开发案例
  12. 因Win10商店引起的卡死问题与解决方法
  13. 计算机cad模板样例,教你如何新建适合自己的CAD模板
  14. linux系统安装佳能打印机驱动,fedora21怎么安装佳能打印机驱动?
  15. 地图学类毕业论文文献包含哪些?
  16. 没得选这件事是人生常态
  17. 标题使用java计算三维空间中两点的欧几里德距离
  18. LVTTL与LVCMOS区别
  19. ch1_系统启动_setup.S
  20. 计算机网络犯罪预防与,计算机网络犯罪及其预防措施

热门文章

  1. VC6生成随机浮点数、C++11的random头文件以及Dev C++支持C++11
  2. Win32 API CreateCompatibleDC 函数的相关应用
  3. C#获取和设置环境变量
  4. SQL CTE学习总结
  5. arcgis坐标系学习总结
  6. Linux安全学习总结
  7. 备忘之--apache下为站点添加错误页面
  8. 【51nod】1559 车和矩形
  9. JSP+JavaBean+Servlet工作原理实例…
  10. 压缩流--DeflateStream和GZipStream