Tôi cần chụp ảnh bằng máy ảnh và, nếu tùy thuộc vào kích thước hình ảnh, hãy xoay nó trước khi lưu vào bộ sưu tập.Cách làm việc với bitmap lớn. Xoay và chèn vào bộ sưu tập
Tôi đang sử dụng
Ý định imageCaptureIntent = new Intent (MediaStore.ACTION_IMAGE_CAPTURE); imageCaptureIntent.putExtra (MediaStore.EXTRA_OUTPUT, uri); startActivityForResult (imageCaptureIntent, IMAGE_CAPTURE);
Để chụp ảnh và lưu vào tệp tạm thời.
Sau đó
Bitmap bmp = BitmapFactory.decodeFile (ImagePath);
Chuỗi str = android.provider.MediaStore.Images.Media.insertImage (cr, bmp, name, description);
Để lưu.
Đây là mã tôi đã cố gắng sử dụng để xoay bitmap
Matrix ma trận = new Matrix();
matrix.postRotate (180);
Bitmap x = Bitmap.createBitmap (bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), ma trận, đúng);
android.provider.MediaStore.Images.Media.insertImage (cr, x, name, description);
Vấn đề là tôi nhận được ngoại lệ OutOfMemoryException.
Có cách nào tốt hơn để xử lý các bitmap để tránh phá vỡ bộ nhớ không?
~ Cảm ơn bạn trước, liên quan
bmp.recycle() wont help here cuz bạn thực sự có thể làm điều đó ngay sau khi bạn bắt OOM. Ý tôi là sau khi xoay bitmap và lưu nó. Tuy nhiên, OOM có thể xuất hiện ở thời điểm quay vì nó phải giữ 2 bitmap giống nhau trong RAM ở đó. – Stan