AndroidCompose:是否有解决painterResource不支持.webp文件的方法?矢量图像正常工作
创始人
2024-10-06 20:30:43
0

可以使用Coil库将.webp文件转换为Bitmap,然后再将其作为Painter资源加载。以下是示例代码:

// 导入 Coil 库
implementation "io.coil-kt:coil-compose:1.3.1"
import androidx.compose.foundation.Image
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.layout.ContentScale
import coil.compose.rememberImagePainter
import coil.transform.CircleCropTransformation
import coil.bitmap.BitmapPool
import coil.decode.*
import coil.size.Size
import okio.BufferedSource
import okio.buffer
import okio.source
import android.graphics.Bitmap
import androidx.compose.ui.res.painterResource


@Composable
fun ImageFromWebp(webpResId: Int, contentDescription: String?) {
    // 将.webp文件转换为Bitmap
    val bitmap: Bitmap = CoilImageLoader().loadBitmap(webpResId)
    // 将Bitmap转换为PainterResource
    val painter = bitmap.asImageBitmap().asAndroidPainter()
    Image(painter = painter, contentDescription = contentDescription, contentScale = ContentScale.Fit)
}



// CoilImageLoader
class CoilImageLoader: ImageLoader {
    private val coilLoader = CoilImageLoaderDelegate()

    override val defaults: Defaults = coilLoader.defaults

    override suspend fun load(
        data: Any,
        size: Size,
        options: Options
    ): LoadResult {
        return coilLoader.load(data, size, options)
    }
}


private class CoilImageLoaderDelegate {
    internal val defaults: Defaults

    init {
        // 构建 CoilImageLoader 的默认配置
        val decoder = object : Decoder {
            override fun handles(source: BufferedSource, mimeType: String?): Boolean {
                return mimeType == MIME_TYPE
            }

            override fun decode(
                pool: BitmapPool,
                source: BufferedSource,
                width: Int,
                height: Int,
                options: Options
            ): DecodeResult {
                val bitmap = WebpDecoder(pool, Bitmap.Config.ARGB_8888).decode(source).get()
                return DecodeResult(bitmap, SourceData(source =

相关内容

热门资讯

攻略讲解!pokemmo手机版... 攻略讲解!pokemmo手机版脚本,hhpoker透视脚本视频,解密教程(有挂软件)是一款可以让一直...
分享实测!wepoker有什么... 分享实测!wepoker有什么规律,hardrock作弊,可靠教程(有挂软件)是由北京得wepoke...
交流学习经验!wepoker底... 交流学习经验!wepoker底牌透视,wepoker网页版透视方法,存在挂教程(有挂教程)关于wep...
发现玩家!德普之星辅助器,we... 1、发现玩家!德普之星辅助器,wepoker手机插件,曝光教程(有挂技巧);详细教程。2、德普之星辅...
一起来讨论!德州局透视脚本免费... 一起来讨论!德州局透视脚本免费版下载手机版,wepoker私人局俱乐部,AA德州教程(有挂技巧);致...
技术分享!we poker辅助... 技术分享!we poker辅助器v3.3,aapoker ai插件,详细教程(有挂攻略);亲真的是有...
实测必看!wepoker智能辅... 实测必看!wepoker智能辅助插件,wepoker轻量版透视系统,我来教教你(有挂神器);原来确实...
玩家必看!wepoker私人局... 玩家必看!wepoker私人局外卦,wepoker怎么设置透视,可靠技巧(有挂攻略)是一款可以让一直...
实测发现!wepoker免费透... 实测发现!wepoker免费透视,pokemomo辅助软件,攻略教程(有挂软件)1、点击下载安装,微...
让我来分享经验!wepoker... 让我来分享经验!wepoker智能辅助插件,wepoker辅助透视,曝光教程(有挂方法);《WPK辅...