在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. Android 截取屏幕图片并保存
  3. android手机图片查看
  4. android 图片双缓存,开源框架 universali image loader
  5. Android实现在webview中长按图片弹出菜单保存图片
  6. Android快速开发框架之xUtils---图片模块
  7. Android ImageView图片自适应大小

随机推荐

  1. GestureDetector.OnGestureListener 详解
  2. EditText的用法
  3. android sdk+eclipse+adt 配置与开发
  4. Android中Touch事件的处理逻辑
  5. android手机内存中的文件操作
  6. 转-Android数据存储(总结篇)
  7. Android:ListView优化
  8. EditText的详细属性说明
  9. checkbox 与 listview 等混用焦点问题
  10. Android(安卓)drawRegion 绘制