Многие, наверное, встречались с подобной ошибкой в процессе разработки своих приложений. Дело в том, что под битмэпы Dalvik (виртуальная машина Java в Android) выделяет всего лишь несколько сот килобайт. В случае, когда работать нужно с внутренними ресурсами приложения это не проблема - можно просто уменьшить размер\разрешение изображений и дело в шляпе.
Но что делать, когда нужно подгрузить картинками\фотографиями из галереи пользователя?
На выручку приходят Options из BitmapFactory.
В итоге получим пустой Bitmap, размеры которого соответствуют указанному файлу. Далее все просто:
Не забываем выставить inJustDecodeBounds в false.
Но что делать, когда нужно подгрузить картинками\фотографиями из галереи пользователя?
На выручку приходят Options из BitmapFactory.
BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(getPath(selectedImageUri), options);
В итоге получим пустой Bitmap, размеры которого соответствуют указанному файлу. Далее все просто:
// обычно нет смысла работать с изображением, большим чем размер экрана scaleWidth = imageWidth/screenWidth; scaleHeight = imageHeight/screenHeight; options.inSampleSize = scaleWidth > scaleHeight ? scaleHeight : scaleWidth; options.inJustDecodeBounds = false; bmp = BitmapFactory.decodeFile(getPath(selectedImageUri), options);
Не забываем выставить inJustDecodeBounds в false.