public class BitMapTools {
/**
* 对图片进行解码操作
*
* @param resource
* 资源文件
* @param resId
* 解码位图的iD
* @param reqWidt
* 指定输出位图的宽度
* @param reqHight
* 制定输出位图的高度
* @return
*/
public static Bitmap decodeBitmap(Resources resource, int resId,
int reqWidth, int reqHight) {
// 对位图进行解码的参数设置
BitmapFactory.Options option = new BitmapFactory.Options();
// 在对位图进行解码的过程中,避免申请内存
option.inJustDecodeBounds = true;
BitmapFactory.decodeResource(resource, resId, option);
//对图片进行压缩
option.inSampleSize = calculateInSimpleSize(option, reqWidth, reqHight);
option.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(resource, resId, option);
}
/**
* 计算相关压缩比例
* @param option
* @param reqWidth
* @param reqHight
* @return
*/
public static int calculateInSimpleSize(BitmapFactory.Options option,
int reqWidth, int reqHight) {
// 获取图片的原始宽高
int imageHight = option.outHeight;
int imageWidht = option.outWidth;
// 压缩比例
int inSimpleSize = 1;
if (imageHight > reqHight || imageWidht > reqWidth) {
final int heightRatio = Math.round(1.0f * imageHight / reqHight);
final int widthRatio = Math.round(1.0f * imageWidht / reqWidth);
inSimpleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
}
return inSimpleSize;
}
}