Intereting Posts
Темы по Firebase Cloud Messaging? Поддержка GreenDao для уникального ограничения на несколько столбцов Android SDK Manager не загружает последнюю платформу Android SDK (API 17) Проверьте, нет ли базы данных Ошибка в startActionMode, appcompat Как включить плейер для прослушивания плейера в Android? Fatal Exception: java.lang.NoClassDefFoundError: android.support.v7.app.AppCompatDelegateImplV23 Службы Google Play устарели. Требуется 10084000, но найдено 9879470. Не удается обновить Как программно переключаться с помощью кнопок buttonclick в Android Видеопроигрыватель YouTube накладывается на другой макет, когда мы прокручиваем «Поток не представляет собой хранилище ключей PKCS12» после сохранения с нового пароля на устройстве Android Как получить центр карты для v2 карт Android? Как предотвратить изменение пользовательских представлений из-за изменений ориентации экрана Может ли проект библиотеки Android иметь собственную базу данных SQLite? Как установить пароль как пиксели изображения в андроиде (точка клика или графский пароль)

Загружать большие изображения в растровые изображения?

Я пытаюсь сделать базовое приложение, которое отображает изображение с камеры, но я, когда пытаюсь загрузить .jpg из SD-карты с помощью BitmapFactory.decodeFile , возвращает null.

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

Как общая галерея показывает огромные снимки с камеры с такой небольшой памятью?

Solutions Collecting From Web of "Загружать большие изображения в растровые изображения?"

Попробуйте установить параметр inSampleSize, как показано в этом примере .

Вы можете следовать этому удивительному учебнику

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

Ну, после много работы, я узнал, что проблема связана не с кодом, а с объемом памяти эмулятора, редактированием avd и увеличением размера ram, решает все проблемы и легко экономит фотографии. Благодарю.

Отправить:

  BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; BitmapFactory.decodeFile(filePath, o); int REQUIRED_SIZE = 640; int width_tmp = o.outWidth, height_tmp = o.outHeight; int scale = 1; while(true) { if (width_tmp < REQUIRED_SIZE && height_tmp < REQUIRED_SIZE) break; width_tmp /= 2; height_tmp /= 2; scale *= 2; } BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; Bitmap bitmap = BitmapFactory.decodeFile(filePath, o2); ByteArrayOutputStream bs2 = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 90, bs2); getIntent().putExtra("byte_picture", bs2.toByteArray()); 

Получать:

 Bitmap photo = BitmapFactory.decodeByteArray(data.getByteArrayExtra("byte_picture"),0,data.getByteArrayExtra("byte_picture").length); 

Вот еще одно решение, которое использует inSampleSize и динамически определяет разрешение изображения для использования на основе доступной памяти:

http://bricolsoftconsulting.com/handling-large-images-on-android/