Bitmap优化问题

来源:互联网 发布:电脑编程有几种 编辑:程序博客网 时间:2024/05/17 03:23
在Android项目中,如果直接使用ImageView显示Bitmap会占用较多的资源,如果图片过大,会造成程序崩溃。为了解决这个问题需要对Bitmap进行压缩,以节省内存。因为项目中用到,所以写下来,以备不时之需。我们可以使用BitmapFactory的options设置图片压缩比,具体代码如下:
/**     * @param absolutePath 图片文件路径     * @return 压缩后的图片     */public static Bitmap bitmapReduce(String absolutePath){        Bitmap bm;        BitmapFactory.Options opt = new BitmapFactory.Options();           //这个isjustdecodebounds很重要              opt.inJustDecodeBounds = true;          bm = BitmapFactory.decodeFile(absolutePath, opt);          //获取到这个图片的原始宽度和高度          int picWidth  = opt.outWidth;          int picHeight = opt.outHeight;          //这个可以自己设置,也可以传参,值越小,压缩程度越大        int screenWidth = 200;          int screenHeight = 200;          //isSampleSize是表示对图片的缩放程度,比如值为2图片的宽度和高度都变为以前的1/2,图片大小为原来1/4        opt.inSampleSize = 1;          //根据屏的大小和图片大小计算出缩放比例          if(picWidth > picHeight){              if(picWidth > screenWidth)                  opt.inSampleSize = picWidth/screenWidth;          }          else{              if(picHeight > screenHeight)                  opt.inSampleSize = picHeight/screenHeight;          }          //这次再真正地生成一个有像素的,返回经过缩放了的bitmap          opt.inJustDecodeBounds = false;          bm = BitmapFactory.decodeFile(absolutePath, opt);          return bm;    }
1 0
原创粉丝点击