【问题标题】:How to get bitmap from URL using Coil?如何使用 Coil 从 URL 获取位图?
【发布时间】:2020-09-05 14:12:23
【问题描述】:

我想从 URL 加载位图,然后使用调色板 API 从中获取一些颜色。

在文档页面,我找不到直接获取位图的代码!

谁能帮帮我?

【问题讨论】:

    标签: android kotlin palette image-load coil


    【解决方案1】:

    您可以使用target 方法并将drawable 转换为bitmap as

        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.enqueue(req)
    

    如果你使用协程,那么在你的 CoroutineScope 中使用 GetRequest(使用重载的 execute 方法和 suspend):

      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
    }
    

    【讨论】:

    • 这条线是做什么的val disposable = loader.execute(req)
    • @IdrisStack 执行构建请求并返回 request disposable,可用于处理排队的请求、释放资源或调用 await 立即执行。
    • 为什么要禁用硬件?
    • @AchrafAmil 我猜这可能是因为当时的一些stability or compatibility issues
    猜你喜欢
    • 2022-12-09
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2023-02-13
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    相关资源
    最近更新 更多