2017-02-01 10 views
0

Я искал исключения из вопросов исключения, но я не мог найти способ для своей проблемы. У меня есть приложение, которое обрабатывает изображения. Мне нужно получить значения RGB для каждого пикселя изображения. Я могу сделать это, когда я выбираю изображение из файла whatsapp, потому что у них малый размер, но если я хочу выбрать изображения из галереи (сделанные с помощью камеры), или если я хочу снимать фотографию с камеры, у меня есть исключение outofmemeory. Я не хочу масштабировать изображение, потому что мне нужна информация о пикселях изображения.Как справиться с исключением outofmemory в android?

У меня есть имя файла и имя изображения в виде строки, я получаю это исключение, когда я декодирую строку, как показано ниже;

imgDecodableString = intent3.getStringExtra("BMP"); 
rotatedBitmap = BitmapFactory.decodeFile(imgDecodableString); 

Есть ли способ справиться с этой проблемой? Спасибо заранее.

+0

https://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html – CommonsWare

+0

Убедитесь, что вы не пропускаете память независимо от того, насколько велика растровая карта: https://developer.android.com/studio/ profile/researchate-ram.html –

+0

imgDecodableString - это строка base64? –

ответ

0

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

андроид: largeHeap = «истинный»

0

Если вы не хотите, чтобы уменьшать изображение, вы можете использовать BitmapRegionDecoder декодировать каждую часть изображения и обработки растрового изображения вместо декодирования целом изображение.