Tôi đang cố gắng giảm kích thước hình ảnh được truy xuất hình thành máy ảnh (vì vậy ~ 5-8 mega pixel) xuống một kích thước nhỏ hơn (kích thước lớn nhất là 1024x768). Tôi đã thử mã sau nhưng tôi liên tục nhận được OutOfMemoryError
.Thay đổi kích thước hình ảnh bộ nhớ hiệu quả trong Android
Bitmap image = BitmapFactory.decodeStream(this.image, null, opt);
int imgWidth = image.getWidth();
int imgHeight = image.getHeight();
// Constrain to given size but keep aspect ratio
float scaleFactor = Math.min(((float) width)/imgWidth, ((float) height)/imgHeight);
Matrix scale = new Matrix();
scale.postScale(scaleFactor, scaleFactor);
final Bitmap scaledImage = Bitmap.createBitmap(image, 0, 0, imgWidth, imgHeight, scale, false);
image.recycle();
Dường như OOM xảy ra trong createBitmap
. Có cách nào hiệu quả hơn để thực hiện việc này không? Có lẽ cái gì đó không yêu cầu tôi tải toàn bộ bản gốc vào bộ nhớ?
Không, tôi đang sử dụng 'android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI' để cho phép người dùng chọn một hình ảnh. – Sionide21