Проблемы с изображениями вздутия живота на Android - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь отладить, почему изображения занимают гораздо больше памяти, чем я ожидал, и мне интересно, связана ли проблема с чем-то, чего мне не хватает при работе с glide.

    glide.asBitmap()
            .load(imageUrl)
            .apply(RequestOptions.centerCropTransform())
            .into(object : BitmapImageViewTarget(objectContainer) {
                override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
                    super.onResourceReady(resource, transition)
                    adapter.setPhoto(resource)

                    var numberOfBytes = resource.byteCount;
* 1003 если я загружаю изображение вручную, это всего 60126 байт или 60 КБ.

Когда я печатаю количество байтов после прохождения этой скользящей нагрузки, мое изображение составляет колоссальные 7,6 МБ !!!! Его рост более чем в 100 раз.

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

1 Ответ

1 голос
/ 08 мая 2020

Когда вы сохраняете файл изображения на свой диск, он обычно сжимается (JPEG, PNG и ...), поэтому они обычно имеют небольшой размер на вашем диске.

Но когда эти изображения go в память (что делает glide, когда загружает этот файл изображений) он сходит с ума и потребляет всю необходимую память, потому что он больше не сжимается, его изображение RAW, которое вы работаете в своей памяти.

Итак, формат сжатия без потерь, такой как JPEG может сделать размер файла 500 КБ, но когда вы загрузите это изображение, он может go, например, до 10 МБ в памяти устройства.

...