OutOfMemoryError с выбором изображения в Android. Как изменить размер изображения перед его расшифровкой в растровое изображение?

Я создаю сборщик изображений в своем приложении для Android, для которого я использовалпример кода на этой странице, Это в основном дает мне кнопку, которая открывает возможность получить файл с SD-карты, или один, сделав снимок. Как только я выбрал изображение, оно отображает изображение с помощью простого ImageView. В общем, это работает на отлично; Я могу выбрать изображение, затем снова нажать кнопку «Выбрать изображение» и выбрать другое изображение. Пока все хорошо .. с небольшими файлами, которые есть.

Проблема начинается, когда я использую «большие файлы»; фотографии, которые я просто сделал с помощью встроенной камеры телефона. Я могу выбрать один, и это хорошо работает. Когда я снова нажимаю кнопку выбора изображения и выбираю другое изображение, в этой строке появляется ошибка OutOfMemoryError (строка 75 ссылки на страницу):

bitmap = BitmapFactory.decodeFile(path);

Мое тестовое устройство довольно современное (Galaxy S4 Mini), так что проблем не должно быть. Поскольку мне нужно отправить изображение в виде строки base64 в API, для которого мне все равно нужно изменить его размер, я могу изменить размер изображения, используя что-то вроде этого:

Bitmap yourBitmap;
Bitmap resized = Bitmap.createScaledBitmap(yourBitmap, newWidth, newHeight, true);

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

Итак, мой вопрос: Есть ли способ, которым я могу изменить размер изображения, прежде чем декодировать его в растровое изображение? Все советы приветствуются!

Ответы на вопрос(5)

Ваш ответ на вопрос