设置图片为默认图片时出现错误(Android、Kotlin)

问题描述 投票:0回答:0

当我按下按钮时,我想在没有服务器通信的情况下将转换后的图像转换为 drawable 文件夹中的默认图像,并将其连接到 Image Composable 的 painter 属性。默认图像是项目目录中存在的可绘制文件夹中的“默认配置文件”。

我该如何解决?

代码:

val responseImage = MyApplication.prefs.getData("image", "")
    val decodedBytes = Base64.decode(responseImage, Base64.DEFAULT)
    val decodedImage = BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.size)

    val decodeFile: File? = File.createTempFile("temp", null, LocalContext.current.cacheDir)
    val outputStream = FileOutputStream(decodeFile)

    decodedImage?.compress(Bitmap.CompressFormat.PNG, 100, outputStream)
    outputStream.close()

    val defaultProfileImageBitmap = BitmapFactory.decodeResource(LocalContext.current.resources, R.drawable.defaultprofile)

    var onChangeProfileImage by remember {
        mutableStateOf(defaultProfileImageBitmap)
    }

    val imageUri = rememberSaveable {
        mutableStateOf(decodeFile?.toUri())
    }

    var painter = rememberImagePainter(
        data = imageUri.value,
        builder = {
            if (imageUri.value == null) {
                placeholder(R.drawable.defaultprofile)
            }
        }
    )
Button(
                        onClick = {
                            painter = onChangeProfileImage
                            openDialog = false
                        },
                        shape = RoundedCornerShape(10.dp),
                        modifier = Modifier
                            .width(250.dp)
                            .height(45.dp)
                            .background(Color.White))
                    {
                        Text(text = "기본 이미지로 변경")
                    }
    Image(
            painter = painter,
            contentDescription = "profileImage",
            modifier = Modifier
                .size(150.dp)
                .padding(8.dp)
                .clickable {
                    openDialog = !openDialog
                },
            contentScale = ContentScale.Crop
        )

此行错误:

 painter = onChangeProfileImage

错误:

Type mismatch: inferred type is Bitmap! but AsyncImagePainter was expected
android kotlin android-jetpack-compose
© www.soinside.com 2019 - 2024. All rights reserved.