您的位置:首页 > 其它

Bitmap优化问题

2016-03-07 19:54 288 查看
在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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: