Исключение OutOfMemory при загрузке растрового изображения из внешнего хранилища

В моем приложении я загружаю пару изображений из файлов JPEG и PNG. Когда я помещаю все эти файлы в каталог ресурсов и загружаю его таким образом, все в порядке:

InputStream stream = getAssets().open(path);
Bitmap bitmap = BitmapFactory.decodeStream(stream, null, null);
stream.close();
return new BitmapDrawable(bitmap);

Но когда я пытаюсь загрузить те же самые изображения с SD-карты, я получаю исключение OutOfMemory!

InputStream stream = new FileInputStream("/mnt/sdcard/mydata/" + path);
Bitmap bitmap = BitmapFactory.decodeStream(stream, null, null);
stream.close();
return new BitmapDrawable(bitmap);

Это то, что я попасть в журнал:

11-05 00:53:31.003: ERROR/dalvikvm-heap(13183): 827200-byte external allocation too large for this process.
11-05 00:53:31.003: ERROR/GraphicsJNI(13183): VM won't let us allocate 827200 bytes
...
11-05 00:53:31.053: ERROR/AndroidRuntime(13183): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
11-05 00:53:31.053: ERROR/AndroidRuntime(13183):     at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
...

Почему это может произойти?

ОБНОВЛЕНИЕ: пробовал оба этих метода на реальном устройстве - кажется, я не могу загрузить более 12 МБ растровых изображений во то, что называется «внешней памятью» (это не SD-карта) .

17
задан Fixpoint 13 November 2010 в 22:04
поделиться