博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bitmap获取图片内存溢出
阅读量:7027 次
发布时间:2019-06-28

本文共 1041 字,大约阅读时间需要 3 分钟。

从本地sd卡获取图片内存溢出解决方法

public Bitmap getBitmap(String path) {    	        File file = new File(path);        Bitmap resizeBmp = null;        BitmapFactory.Options opts = new   BitmapFactory.Options();        // 数字越大读出的图片占用的heap越小 不然总是溢出         opts.inSampleSize = 2;        resizeBmp = BitmapFactory.decodeFile(file.getPath(), opts);        return resizeBmp;    }

如果图片是全屏显示的话

opts.inSampleSize = i;
i数值不要太大,如果是屏幕上的小图片的话尽情呀吧,i=1,压缩倍数是1倍,i=2压缩倍数是4倍,因为i是它边的压缩,整个图的话肯定的边长的平方么,大家懂得。
从资源文件中获取图片时也可能出现内存溢出,尤其是在Listview之类的适配器中进行调用的时候。
BitmapFactory.Options opts = new   BitmapFactory.Options();opts.inSampleSize =5;
mBgBitmap = BitmapFactory.decodeResource(getActivity().getResources(), imgv[position],opts);t.setImageBitmap(mBgBitmap);
imgv是存放资源文件的数组,t是Imgview。
这块还有一个问题就是内存释放,我用的感觉比较好的是下面这个方法,可以试一下,本人也是一介菜鸟,原理 还没理解,只不过感觉可以解决问题
t.setImageBitmap(null);			if(mBgBitmap != null  && !mBgBitmap.isRecycled())  	        {  				System.out.println("释放内存!");				mBgBitmap = null; 	        } 			System.gc();
先将所要赋值的控件置为空,防止有关联的文件出现非法释放
再将bitmap置为空,最后释放c端代码中的内存

转载地址:http://nkmxl.baihongyu.com/

你可能感兴趣的文章
js数组操作
查看>>
比特币重回4000美元的关口
查看>>
传统短视频直播平台和新兴一对一交友源码力与美的结合
查看>>
撩课大前端-面试宝典-第七篇
查看>>
开源大数据周刊-第3期
查看>>
java版 b2b2c o2o电子商务云商平台spring cloud+springmvc+mybatis
查看>>
区块链100讲:Hyperledger Fabric 区块链多机部署
查看>>
重学前端学习笔记(十九)--JavaScript中的函数
查看>>
SpringBoot2.1版本的个人应用开发框架 - 整合vue实现前后端分离
查看>>
Rxjava2源码分析之线程切换(subscribeOn、observeOn)
查看>>
SpringBoot整合Mybatis
查看>>
KNN分类器-Java实现
查看>>
从事iOS研发6年的面经——希望对你们有帮助,程序员必看!
查看>>
uni-app 打开第三方程序
查看>>
fastlane 的集成与使用
查看>>
Android学习之JSON解析(二)使用GSON技术解析JSON
查看>>
JavaScript中的原型链和继承
查看>>
16.Azure站点到站点***隧道(非专线)(下)
查看>>
使用Java反射机制将Map转换为Java对象,支持Boolean、Date类型
查看>>
pnp4nagios在icinga2上安装注意事项
查看>>