/**
* @param path 路径
* @param displayWidth 需要显示的宽度
* @param displayHeight 需要显示的高度
* @return Bitmap
*/
public static Bitmap decodeBitmap(String path, int displayWidth, int displayHeight) {
BitmapFactory.Options op = new BitmapFactory.Options();
op.inJustDecodeBounds = true;
// op.inJustDecodeBounds = true;表示我们只读取Bitmap的宽高等信息,不读取像素。
Bitmap bmp = BitmapFactory.decodeFile(path, op); // 获取尺寸信息
// op.outWidth表示的是图像真实的宽度
// op.inSamplySize 表示的是缩小的比例
// op.inSamplySize = 4,表示缩小1/4的宽和高,1/16的像素,android认为设置为2是最快的。
// 获取比例大小
int wRatio = (int) Math.ceil(op.outWidth / (float) displayWidth);
int hRatio = (int) Math.ceil(op.outHeight / (float) displayHeight);
// 如果超出指定大小,则缩小相应的比例
if (wRatio > 1 && hRatio > 1) {
if (wRatio > hRatio) {
// 如果太宽,我们就缩小宽度到需要的大小,注意,高度就会变得更加的小。
op.inSampleSize = wRatio;
} else {
op.inSampleSize = hRatio;
}
}
op.inJustDecodeBounds = false;
bmp = BitmapFactory.decodeFile(path, op);
// 从原Bitmap创建一个给定宽高的Bitmap
return Bitmap.createScaledBitmap(bmp, displayWidth, displayHeight, true);
}