BitmapFactory decodeStream в файл.Или как бороться с растровыми изображениями, не убивая ВМ? - PullRequest
1 голос
/ 11 июля 2011

Я борюсь с ошибками OOM при декодировании изображений.Это сообщение прямо о деньгах, с которыми я имею дело: BitmapFactory OOM сводит меня с ума

Я думаю, что Я ЗНАЮ, что может решить мою проблему, но не уверен, как это сделать.Прямо сейчас, когда я изменяю размер изображения - я получаю растровое изображение примерно так:

//Decode with inSampleSize
            BitmapFactory.Options o2 = new BitmapFactory.Options();
            o2.inSampleSize=scale;
            o2.inDither=false;          //Disable Dithering mode
            o2.inPurgeable=true;        //Tell to gc that whether it needs free memory, the Bitmap can be cleared
            o2.inInputShareable=true;   //Which kind of reference will be used to recover the Bitmap data after being clear, when it will be used in the future
            o2.inTempStorage=new byte[32 * 1024];
            Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(file), null, o2);

И затем мне нужно сохранить его обратно в файл:

FileOutputStream out = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);

Как вы видите -Моя цель - получить уменьшенное изображение в хранилище.

Прямо сейчас - когда я работаю с большими растровыми изображениями - я загружаю большой файл в память, который увеличивает размер кучи, а затем при следующей попытке - я получаю исключение OOM, потому что в собственной куче недостаточно памяти.

Итак, я хотел бы получить поток из BitmapFactory и каким-то образом передать его в FileStream для хранения.Это позволило бы устранить проблему с кучей виртуальных машин, если я хочу большие образы.

Кто-нибудь знает, как?

1 Ответ

0 голосов
/ 11 июля 2011

Попробуйте вызвать Bitmap.recycle после того, как вы закончили с одним растровым изображением, но перед загрузкой следующего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...