Я получаю довольно сумасшедший с этим вопросом:закодированных byte64 изображения вызывает OutOfMemoryError андроид
Я получаю каждый раз, когда я открываю OutOfMemoryError моего приложения. В какой-то момент он загружает изображение с сервера, но он кодирует строку Base64.
Whay я в основном:
decodedString = Base64.decode(imagen_codificada);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0,
decodedString.length);
Но я получаю проклятую OOME, каждый раз.
Если пытался с этим:
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 8;
Даже настройкой параметры 128, что является сумасшедшим, но все-таки выходит из строя ...
Есть ли способ уменьшить размер строки кодификации изображения каким-то образом перед его расшифровкой? Я не могу работать прямолинеен с изображением, так как он используется для многих других вещей, жгуты приложения и в настольных средах ...
Я придаю журнал ОШИБКА:
12-21 10:36:27.032: E/dalvikvm-heap(5508): 10119168-byte external allocation too large for this process. 12-21 10:36:27.032: E/dalvikvm(5508): Out of memory: Heap Size=5823KB, Allocated=4351KB, Bitmap Size=720KB, Limit=13692KB 12-21 10:36:27.032: E/dalvikvm(5508): Trim info: Footprint=6343KB, Allowed Footprint=6343KB, Trimmed=520KB 12-21 10:36:27.032: E/GraphicsJNI(5508): VM won't let us allocate 10119168 bytes 12-21 10:36:27.192: E/AndroidRuntime(5508): FATAL EXCEPTION: main 12-21 10:36:27.192: E/AndroidRuntime(5508): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
EDIT: решаемый с ЭТИМ:
decodedString = Base64.decode(imagen_codificada);
System.gc();
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 8;
InputStream input = new ByteArrayInputStream(decodedString);
Bitmap decodedByte = BitmapFactory.decodeStream(input, null,
options);
menu.setNombreApellido(decodedByte);
Спасибо всем!
Может быть, это поможет вам: http: //stackoverflow.com/questions/477572/android-strange-out-of-memory-issue/823966#823966 –
Привет, попробуй и прокомментируй. Благодаря! – vicks630
Привет, я просто понял, что не могу использовать decodeByteArray с параметрами, поэтому мне нужно будет изменить массив байтов в поток. Я постараюсь, а затем коном. – vicks630