AN Gridview加载图片缩略图出现OOM的问题解法
来源:互联网 发布:伟达公关 知乎 编辑:程序博客网 时间:2024/05/21 16:54
出现这个OOM是缺乏了常识,所以在这里补全
出现OOM的原因是:把图片全部加载到内存当中再进行缩放
出现OOM的关键代码:BitmapFactory.decodeFile(file.getAbsolutePath());
解决的关键是:获取到图片的宽高等关键属性加载入内存而不是原始图片,然后再进行缩放
解决OOM的关键代码:BitmapFactory.decodeFile(filePath, options) ;
先来看例子
public static int calculateRatioSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { final int heightRatio = Math.round((float) height / (float) reqHeight); final int widthRatio = Math.round((float) width / (float) reqWidth); inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio; } return inSampleSize; } public static Bitmap decodeSampledBitmapFromFilePath(String filePath, int reqWidth, int reqHeight) { final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true;// A BitmapFactory.decodeFile(filePath, options) ; options.inSampleSize = calculateRatioSize(options, reqWidth, reqHeight); options.inJustDecodeBounds = false; return BitmapFactory.decodeFile(filePath, options) ;// B }BitmapFactory.Options options的inJustDecodeBounds设置为true
则可以使得不加载原始图片进入内存,设置之后A返回的Bitmap是为null的
然后根据给定的需要缩放的宽高来进行计算缩放比例inSampleSize,
最后把options.inJustDecodeBounds=false关掉,重新读入bitmap对象,这是B 就是所要的图片缩略图
最后附上参考的两个博客:
点击打开链接1
点击打开链接2
0 0
- AN Gridview加载图片缩略图出现OOM的问题解法
- GridView 加载图片 OOM
- 加载Drawable图片时出现的oom问题
- Android GridView加载大量图片时出现OOM情况
- 加载图片出现OOM
- 解决加载图片出现OOM的方法
- android 中解决gridview 等加载大图片出现oom的问题
- Android完美解决GridView异步加载图片和加载大量图片时出现OOM
- 关于android gridview 加载大量图片的OOM问题解决方案
- android加载图片出现OOM
- GridView异步加载本地图片缩略图
- Android 加载打图片出现OOM异常的处理方式
- Android加载图片时出现OOM(OutOfMermary)的问题解决方案
- Android 解决加载图片过多出现oom--强大的Fresco
- Android加载一张3.4MB的图片,不出现OOM
- listView加载几百张图片不出现OOM的方法
- ANDROID图片加载时出现OOM的一般处理方法
- OOM的出现及解决(加载图片)
- 【android】在adapter中获取listview的实例
- 003小插曲之变量和字符串
- lua中os库详细介绍
- 用户行为日志的采集
- Python学习笔记之HelloWorld
- AN Gridview加载图片缩略图出现OOM的问题解法
- android数据存储
- Image to PDF Converter in Salesforce
- 安装安卓的开发环境
- 你知道LTE Cat.1到Cat.10 那你知道Cat.0吗?
- ASP.NET MVC5分享,本人亲手写的
- Android APK反编译就这么简单 详解(附图)
- ios获取已安装的应用列表
- Windows的字体LOGFONT