2010-07-10 3 views
14

J'essaie de réduire la taille des images récupérées de la caméra (donc ~ 5-8 méga pixels) jusqu'à un plus petit nombre de tailles (le plus grand étant 1024x768). J'ai essayé le code suivant mais j'ai toujours un .Redimensionnement d'image efficace de la mémoire dans 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(); 

Il semble que le OOM se produit au cours de la createBitmap. Y a-t-il une manière plus efficace de mémoire de faire ceci? Peut-être quelque chose qui ne nécessite pas que je charge tout l'original en mémoire?

Répondre

1

Prenez-vous la photo avec l'appareil photo dans votre application? Si tel est le cas, vous devez définir la taille de l'image sur une taille plus petite lors de la capture via android.hardware.Camera.Parameters.setPictureSize

+0

Non, je me sers du 'android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI' pour permettre à l'utilisateur de sélectionner une image. – Sionide21

Questions connexes