Я разрабатываю приложение, которое должно иметь дело с большим количеством растровых изображений огромного размера с сервера. Есть способы декодирования.
Опция 1:
- Создайте буферизованный поток ввода из URL-адреса изображения
- Декодировать только границы
- Создать коэффициент масштабирования/размер выборки
- Создайте буферизованный входной поток (опять же, поскольку bitmapfactory закрывает поток после завершения декодирования)
- Декодировать растровое изображение
Вариант 2
- Создайте буферизованный поток ввода из URL-адреса изображения
- Декодируйте растровое изображение в исходном размере
- Используйте bitmap.createScaledBitmap для создания нужного размера.
В варианте 1 нам нужно загрузить растровое изображение дважды, тогда как в случае 2 мы должны явно переработать растровое изображение исходного размера, что вызовет сборку мусора, которая является интенсивной операцией ЦП.
Существуют ли какие-либо другие методы, которые могут эффективно достичь этого?
With option 1, we need to download the bitmap twice
.Нет. Сначала вы загружаете не растровое изображение, а файл. Скорее всего jpg файл. Затем, если вы декодируете границы, будет загружен только заголовок файла. Не весь файл. Заголовка достаточно для декодирования границ. Так что выбирайте вариант один. - person blackapps   schedule 05.01.2020