Как получить растровое изображение из URL-адреса с помощью Coil?

Я хочу загрузить растровое изображение из URL-адреса, а затем использовать API палитры, чтобы получить от него некоторые цвета.

На странице документации я не могу найти код для прямого получения растрового изображения!

Может кто-нибудь мне помочь?


person Chintan Parmar    schedule 19.05.2020    source источник


Ответы (1)


Вы можете использовать метод target и привести чертеж к bitmap как

    val loader = ImageLoader(this)
    val req = ImageRequest.Builder(this)
        .data("https://images.dog.ceo/breeds/saluki/n02091831_3400.jpg") // demo link
        .target { result ->
            val bitmap = (result as BitmapDrawable).bitmap
        }
        .build()

    val disposable = loader.execute(req)

Если вы используете сопрограммы, используйте GetRequest (с перегруженным методом execute с suspend) в CoroutineScope как:

  coroutineScope.launch{
    val loader = ImageLoader(this)
    val request = ImageRequest.Builder(this)
        .data("https://images.dog.ceo/breeds/saluki/n02091831_3400.jpg")
        .allowHardware(false) // Disable hardware bitmaps.
        .build()

    val result = (loader.execute(request) as SuccessResult).drawable
    val bitmap = (result as BitmapDrawable).bitmap
}
person Pavneet_Singh    schedule 19.05.2020
comment
Что делает эта строка val disposable = loader.execute(req) - person Idris Stack; 06.07.2020
comment
@IdrisStack, который выполняет запрос на сборку и возвращает request disposable, который можно использовать для удаления запросов из очереди, освобождения ресурсов или вызова await для немедленного выполнения. - person Pavneet_Singh; 08.07.2020
comment
Почему вы отключаете оборудование? - person Achraf Amil; 02.04.2021
comment
@AchrafAmil Думаю, это произошло из-за некоторых проблем со стабильностью или совместимостью в то время. - person Pavneet_Singh; 14.04.2021