在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;
}