在Android项目中,如果直接使用ImageView显示Bitmap会占用较多的资源,如果图片过大,会造成程序崩溃。为了解决这个问题需要对Bitmap进行压缩,以节省内存。因为项目中用到,所以写下来,以备不时之需。
我们可以使用BitmapFactory的options设置图片压缩比,具体代码如下:
/**
* @param absolutePath 图片文件路径
* @return 压缩后的图片
*/
public static Bitmap bitmapReduce(String absolutePath){
Bitmap bm;
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inJustDecodeBounds = true;
bm = BitmapFactory.decodeFile(absolutePath, opt);
int picWidth = opt.outWidth;
int picHeight = opt.outHeight;
int screenWidth = 200;
int screenHeight = 200;
opt.inSampleSize = 1;
if(picWidth > picHeight){
if(picWidth > screenWidth)
opt.inSampleSize = picWidth/screenWidth;
}
else{
if(picHeight > screenHeight)
opt.inSampleSize = picHeight/screenHeight;
}
opt.inJustDecodeBounds = false;
bm = BitmapFactory.decodeFile(absolutePath, opt);
return bm;
}