Sto cercando di ridurre le dimensioni delle immagini recuperate dalla fotocamera (quindi ~ 5-8 mega pixel) fino a uno a pochi formati più piccoli (il più grande è 1024x768). Ho provato il seguente codice ma ottengo costantemente un OutOfMemoryError
.Ridimensionamento delle immagini con memoria efficiente in 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();
Sembra che l'OOM avviene durante la createBitmap
. C'è un modo più efficiente di memoria per fare questo? Forse qualcosa che non mi richiede di caricare l'intero originale in memoria?
No, io sto usando il 'android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI' per consentire all'utente di selezionare un'immagine. – Sionide21