Старый пост, но вы никогда не знаете ...
Logcat показывает проблему:
«слишком большое выделение для этого процесса»
Изображение, которое вы пытаетесь отобразить, слишком велико, чтобы уместиться в память. Вам нужно уменьшить изображение, но не пытайтесь создать уменьшенную версию растрового изображения, иначе вы столкнетесь с той же проблемой. Решением является загрузка растрового изображения в память, но ТОЛЬКО для его размеров, а затем создание нового растрового изображения с размером выборки, который уменьшает общий размер изображения.
На самом деле вам даже не нужно загружать изображение, чтобы получить его оригинальный размер, но это часто имеет смысл, поэтому вы можете выбрать подходящий размер выборки.
, например
Предполагается, что ваше растровое изображение получено из InputStream:
InputStream in = ... // Your Bitmap Stream
// Decode JUST the dimensions
Options dimensionOptions = new Options();
dimensionOptions.inJustDecodeBounds = true;
BitmapFactory.decodeStream(in, null, dimensionOptions);
// Get the dimensions of the raw
int rawWidth = dimensionOptions.outWidth;
// Choose a target width for the image (screen width would make sense)
int targetWidth = 480;
// Select the sample size which best matches our target size.
// This must be an int
float sampleSize = (float)rawWidth / (float)targetWidth;
// Assume lower, which will result in a larger image
int sample = (int) FloatMath.floor(sampleSize);
// Use this to decode the original image data
Options scaleOptions = new Options();
scaleOptions.inPreferredConfig = Bitmap.Config.ARGB_8888; // 4 bytes per pixel
scaleOptions.inSampleSize = sample;
// Now create a bitmap using the sample size
Bitmap scaled = BitmapFactory.decodeStream(in, null, scaleOptions);