Ho bisogno di scattare una foto con la fotocamera e, se a seconda delle dimensioni dell'immagine, ruotarla prima di salvarla nella galleria.Come lavorare con bitmap di grandi dimensioni. Rotazione e inserimento nella galleria
sto usando
Intent imageCaptureIntent = new Intent (MediaStore.ACTION_IMAGE_CAPTURE); imageCaptureIntent.putExtra (MediaStore.EXTRA_OUTPUT, uri); startActivityForResult (imageCaptureIntent, IMAGE_CAPTURE);
Per scattare la foto e salvarla in un file temporaneo.
Poi
bitmap BMP = BitmapFactory.decodeFile (imagePath);
String str = android.provider.MediaStore.Images.Media.insertImage (cr, bmp, nome, descrizione);
Per salvarlo.
Questo è il codice che cercato di utilizzare per ruotare l'immagine bitmap
matrice Matrix = new Matrix();
matrix.postRotate (180);
Bitmap x = Bitmap.createBitmap (bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrice, vero);
android.provider.MediaStore.Images.Media.insertImage (cr, x, nome, descrizione);
Il problema è che sto ricevendo un OutOfMemoryException.
Esiste un modo migliore per gestire le bitmap per evitare di rompere la memoria?
~ Grazie in anticipo, saluti
bmp.recycle() wont help here cuz puoi davvero farlo bene DOPO aver catturato OOM. Voglio dire dopo aver ruotato bitmap e averlo salvato. Tuttavia, l'OOM probabilmente arriva in un momento rotante dal momento che deve conservare 2 stessi bitmap nella RAM. – Stan