標籤:
private Bitmap imageZoom(int position , Bitmap bitMap) {
//圖片允許最大空間
double maxSize =2000.00;
double bitmapSize = bitMap.getByteCount()/1024;
Log.d("derrick", "bitmap 0 = "+bitmapSize+" , index = "+position);
if (bitmapSize < maxSize) {
return bitMap;
}
if (bitmapSize > maxSize) {
//擷取bitmap大小 是允許最大大小的多少倍
double scale = bitmapSize / maxSize;
//開始壓縮 此處用到平方根 將寬頻和高度壓縮掉對應的平方根倍 (1.保持刻度和高度和原bitmap比率一致,壓縮後也達到了最大大小佔用空間的大小)
Bitmap result = zoomImage(bitMap, bitMap.getWidth() / Math.sqrt(scale),bitMap.getHeight() / Math.sqrt(scale));
Log.i("derrick", "bitmap 1 = "+result.getByteCount()/1024 +" , index = "+position);
return result;
}
return bitMap;
}
private Bitmap zoomImage(Bitmap bgimage, double newWidth,double newHeight) {
// 擷取這個圖片的寬和高
float width = bgimage.getWidth();
float height = bgimage.getHeight();
// 建立操作圖片用的matrix對象
Matrix matrix = new Matrix();
// 計算寬高縮放率
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// 縮放圖片動作
matrix.postScale(scaleWidth, scaleHeight);
Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, (int) width, (int) height, matrix, true);
return bitmap;
}
Android 開發壓縮圖片