在Android里加载图片,通常转换成Bitmap对象,如果图片过大,就会引起OOM异常,所以Android提供了 BitmapFactory.Options类,

把inJustDecodeBounds  设置为true,返回的bitmap为null,但是会把Bitmap的宽高返回,这样就避免的OOM异常

BitmapFactory.Options options =newBitmapFactory.Options();options.inJustDecodeBounds =true;Bitmap bmp = BitmapFactory.decodeFile(path, options);/* 这里返回的bmp是null */

得到了宽高后,要压缩图片

intheight = options.outHeight *200/ options.outWidth;options.outWidth =200;options.outHeight = height; options.inJustDecodeBounds =false;Bitmap bmp = BitmapFactory.decodeFile(path, options);image.setImageBitmap(bmp);

这样并没有有效的节约内存。要想节约内存,还需要用到BitmapFactory.Options这个类里的inSampleSize这个成员变量。

我们可以根据图片实际的宽高和我们期望的宽高来计算得到这个值。

options.inSampleSize = options.outWidth /200;/*图片长宽方向缩小倍数*/

另外,为了节约内存我们还可以使用下面的几个字段:

options.inDither=false;/*不进行图片抖动处理*/options.inPreferredConfig=null;/*设置让解码器以最佳方式解码*//* 下面两个字段需要组合使用 */options.inPurgeable =true;options.inInputShareable =true;

更多相关文章

  1. 探讨android图片资源的抖动处理和格式转换
  2. (4.1.12)Android高效加载大图、多图解决方案,有效避免程序OOM
  3. 2010.12.16——— android listView 显示图片 内存溢出问题
  4. 使用valgrind检测Android(安卓)native程序的内存
  5. Android(安卓)截取屏幕图片并保存
  6. android 中文 api (87) —— BaseInputConnection
  7. 获取android手机内部存储空间和外…
  8. Android内存分析和调优(下)
  9. android 图片双缓存,开源框架 universali image loader

随机推荐

  1. instruction-formats.html
  2. [gitbook] Android框架分析系列之Android
  3. Android LinearLayout属性
  4. android中四大组件之间相互通信
  5. 转:listview android:cacheColorHint,andr
  6. Android对话框里面的输入值获取不到,空指
  7. Android统计图表MPAndroidChart
  8. MotionLayout入门
  9. Netty多语言(Java、Android 、C#、WebSock
  10. android 自定义按钮样式