Ich versuche, die Größe der Bilder von der Kamera (so ~ 5-8 Megapixel) auf eine ein paar kleinere Größen (die größte 1024x768) abgerufen zu reduzieren. Ich versuchte den folgenden Code, aber ich bekomme immer eine OutOfMemoryError
.Speicher effiziente Bildgröße 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();
Es sieht aus wie die OOM passiert während der createBitmap
. Gibt es eine mehr speichereffiziente Möglichkeit, dies zu tun? Vielleicht etwas, bei dem ich nicht das gesamte Original in den Speicher laden muss?
, ich bin mit dem 'android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI' der Benutzer zu lassen, um ein Bild auszuwählen. – Sionide21