繁体   English   中英

线圈 1.3.2:从 firebase 加载图像不起作用 - “不支持提取器:gs://”

[英]Coil 1.3.2 : Loading image from firebase not working - "No fetcher supports: gs://"

 Image(
        modifier = Modifier.size(100.dp).padding(16.dp),
        painter = rememberImagePainter(
            ImageRequest.Builder(LocalContext.current)
 //                    .data("https://media-cldnry.s-nbcnews.com/image/upload/t_fit-760w,f_auto,q_auto:best/streams/2013/March/130326/1C6639340-google-logo.jpg")
                .data(Firebase.storage.getReference("<Redacted>"))
                .crossfade(false)
                .listener(object : ImageRequest.Listener {

                    override fun onError(request: ImageRequest, throwable: Throwable) {
                        super.onError(request, throwable)
                        Log.e("CoilRequest", "${throwable.message}")
                    }
                })
                .placeholder(getShimmerPlaceholder())
                .build()
        ),
        contentDescription = "description",
        contentScale = ContentScale.Fit
    )

当我使用来自 web 的一些随机image时,注释的代码正在工作,但是当我使用来自 firebase 的托管图像时,它在compose上不起作用,并且我收到来自线圈的error回调

Unable to fetch data. No fetcher supports: gs://

view中使用了相同的方法,但它确实有效。

inline fun ImageView.load(data: data: StorageReference, builder: ImageRequest.Builder.() -> Unit) : Disposable {
    val loadRequest = ImageRequest.Builder(context)
                      .data(data)
                      .target(this@load)
                      .apply(builder).build()
          return FireCoil.loader(context).enqueue(loadRequest)
}

任何帮助将不胜感激。 谢谢!

编辑:在挖掘更多并尝试不同版本之后,似乎我需要创建一个自定义提取器来使用 a.webp 格式,我不知道为什么它适用于ImageView但不适用于Composable Image 是否有任何链接可以指导我如何为线圈创建自定义fethcher 谢谢你。

gs://开头的 URL 是 Google Cloud Storage 的原生 URL 格式,许多常见库无法识别 - 其中 Coil 显然是其中之一。

要显示数据,您有两种选择:

  • 为图像生成一个下载 URL ,这是一个公开可读的 URL,从https://开始,并将其传递给 Coil。
  • 通过 Firebase SDK 从 URL 下载文件,然后根据本地文件/数据在 Coil 中显示图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM