簡體   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