2016-12-16 2 views
1

Я снимаю весь снимок экрана WebView и показываю растровое изображение на ImageView. Растровое изображение может быть 7 высотой экрана. (Например 1440x14000 пикселей)Загрузка очень большого растрового изображения

Я часто сталкиваются с

OutOfMemoryError.

Я видел this

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

Есть ли способ обработки OutOfMemoryError без загрузки уменьшенной версии?

+0

Размер, который вы описываете как растровое изображение, вычисляет слишком 75 МБ, поэтому он может просто быть слишком большим для обработки. Сколько памяти у устройства? – Aganju

+0

Система Android дает мое приложение 512 МБ. –

+0

Serdar selam :) Вы можете попробовать делить большое растровое изображение на разделы и отображать их в нескольких изображениях. И есть еще несколько хороших решений [здесь] (http: // stackoverflow.com/questions/6518215/display-huge-images-in-android) –

ответ

4

Растровое изображение может быть размером 7 экранов. (Например, 1440x14000 px)

Обратите внимание, что это означает, что пользователь не может видеть все изображение сразу при полном разрешении.

Я часто сталкиваюсь с OutOfMemoryError

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

Это говорит о том, что нагрузка уменьшенную версию в памяти, но я не хочу терять качество

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

Есть ли способ обработать OutOfMemoryError без загрузки уменьшенной версии?

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

+0

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

+1

@serdarbuyukkanli: Виджеты, подобные тому, который я связываю, чтобы предлагать это, и управлять памятью, чтобы сделать это возможным, загружая куски битмапа за раз, исходя из текущей позиции прокрутки. – CommonsWare

0

Это не решение, конечно, но я также не знаком с вашими точными потребностями, поэтому, возможно, это может вам немного помочь - вы можете попробовать играть с растровыми опциями во время декодирования. Попробуйте использовать Bitmap.Config.inPreferredConfig как RGB_565 - это уменьшит размер вашего растрового изображения в два раза по сравнению с ARGB_8888 по умолчанию. Но, конечно, если вы используете сложные изображения на своей веб-странице, это может снизить их качество.

 Смежные вопросы

  • Нет связанных вопросов^_^