Tôi đã có bitmap ... và nếu chiều cao của bitmap lớn hơn maxHeight hoặc chiều rộng lớn hơn maxWidth, tôi muốn cân đối lại kích thước hình ảnh sao cho nó vừa với maxWidth X maxHeight. Dưới đây là những gì tôi đang cố gắng:Tỷ lệ thay đổi kích thước một bitmap
BitmapDrawable bmp = new BitmapDrawable(getResources(), PHOTO_PATH);
int width = bmp.getIntrinsicWidth();
int height = bmp.getIntrinsicHeight();
float ratio = (float)width/(float)height;
float scaleWidth = width;
float scaleHeight = height;
if((float)mMaxWidth/(float)mMaxHeight > ratio) {
scaleWidth = (float)mMaxHeight * ratio;
}
else {
scaleHeight = (float)mMaxWidth/ratio;
}
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap out = Bitmap.createBitmap(bmp.getBitmap(),
0, 0, width, height, matrix, true);
try {
out.compress(Bitmap.CompressFormat.JPEG, 100,
new FileOutputStream(PHOTO_PATH));
}
catch(FileNotFoundException fnfe) {
fnfe.printStackTrace();
}
tôi nhận được ngoại lệ sau đây:
java.lang.IllegalArgumentException: bitmap size exceeds 32bits
Tôi đang làm gì sai ở đây?
Bạn có thể dán mã được sửa vào đây không? Tôi nhận được cùng một ngoại lệ – Mahesh