Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Android编程之Bitmap图片压缩大小

Bitmap图片太大,会造成内存溢出。一般的都有图片预览机制,就是得到一张尺寸小一点的图片。这里所谓的缩小尺寸可不是指在layout中设置一下宽高使图片缩小(其实质还是一张占内存大图),而是实实在在的将图片本身缩小,减小内存占用。以下是方法,详细说明都在注释里了:
  1. private Bitmap revitionImageSize(String path, int size) throws IOException {  
  2.         // 取得图片   
  3.         InputStream temp = this.getAssets().open(path);  
  4.         BitmapFactory.Options options = new BitmapFactory.Options();  
  5.         // 这个参数代表,不为bitmap分配内存空间,只记录一些该图片的信息(例如图片大小),说白了就是为了内存优化   
  6.         options.inJustDecodeBounds = true;  
  7.         // 通过创建图片的方式,取得options的内容(这里就是利用了java的地址传递来赋值)   
  8.         BitmapFactory.decodeStream(temp, null, options);  
  9.         // 关闭流   
  10.         temp.close();  
  11.   
  12.         // 生成压缩的图片   
  13.         int i = 0;  
  14.         Bitmap bitmap = null;  
  15.         while (true) {  
  16.             // 这一步是根据要设置的大小,使宽和高都能满足   
  17.             if ((options.outWidth >> i <= size)  
  18.                     && (options.outHeight >> i <= size)) {  
  19.                 // 重新取得流,注意:这里一定要再次加载,不能二次使用之前的流!   
  20.                 temp = this.getAssets().open(path);  
  21.                 // 这个参数表示 新生成的图片为原始图片的几分之一。   
  22.                 options.inSampleSize = (int) Math.pow(2.0D, i);  
  23.                 // 这里之前设置为了true,所以要改为false,否则就创建不出图片   
  24.                 options.inJustDecodeBounds = false;  
  25.   
  26.                 bitmap = BitmapFactory.decodeStream(temp, null, options);  
  27.                 break;  
  28.             }  
  29.             i += 1;  
  30.         }  
  31.         return bitmap;  
效果图:以下是工程文件:Bitmap图片压缩大小源码下载免费下载地址在 http://linux.linuxidc.com/用户名与密码都是www.linuxidc.com具体下载目录在 /2012年资料/7月/30日/Android编程之Bitmap图片压缩大小