картинками в высоком разрешении. Картинки лежат на девайсе в jpg. При загрузке в адаптере ресайклера ловлю OOM.
Картинки грузила как битмапы. Понимаю, что в памяти под битмапу выделяется (width * height * pixel format) байт. В моем случае битмапа получается слишком большая (jpg файл 2Мб = битмапа 70Мб)
Если ли другие способы, чтобы отобразить картинку без потери качества и с меньшим выделением памяти?
use glide
уже, не спасает
можно в манифесте поставить largeHeap="true" но это не решение
Если грузить картинку через глайд без кастомных настроек, то качество картинки сильно проседает. Это критично в моем случае. Картинка в дальнейшем будет зумиться в х5-х10. А при .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) - ООМ
мне кажется нужно в момент зума заменять на более высокое качество
А с чего вы решили, что у пользователя будет столько свободного ОЗУ?
я как раз и спрашиваю как экономить оперативную память в таком случае. Может быть, кто-нибудь работал с картинками в высоком разрешении и знает, как без сильной потери качества можно грузить картинки в ресайклер
Какой критерий потери качества? Есть ли смысл пытаться показывать картинку, например 10000х10000 пикселей, если даже таких экранов в природе не существует? Покопайтесь в glide, там могут быть параметры для уменьшения качества и/или размеров картинки при загрузке.
там еще Picasso есть, альтернатива глайду, мб там что найдешь
Пикассо через таргет попробуйте
Спасибо за совет, как раз и смотрю в сторону декод форматов и переопределения таргетов
Хозяйке на заметку от Гугла: https://developer.android.com/topic/performance/graphics/load-bitmap
уже читала) К сожалению, там ни слова про сохранение качества при сжатии.
Качество при сжатии невозможно сохранить у растровых форматов. Можно только поиграться с параметрами сжатия, чтобы получить приемлемый результат.
Работал. Делаешь от картинки эскиз 200×200 или 300 х300(ThumbnailUtils), хранишь его вместе с картинкой (в файле, в кэшах).
Я так понимаю, что все равно нужно большую грузить, и вот тогда и приходит OOM.
У тебя так большая грузится один раз.
Она тоже может вызвать OOM
Нет. Работал с 4096×4096 - одна даже на говнофоне обычно тянется. С largeHeap несколько
Обсуждают сегодня