Android学习_从相册取得图片并显示

  


        // 创建一个可变的State来保存BitmapPainter
        // 类型(MutableState<BitmapPainter?>)不能缺失,因为初始值是null
        val painter: MutableState<BitmapPainter?> =  mutableStateOf(null)

        val mGalleryLauncher = registerForActivityResult(ActivityResultContracts.GetContent()){ uri->
            uri?.let {

                // 不同版本取得方式
                val bitmap = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
                    ImageDecoder.decodeBitmap(ImageDecoder.createSource(this.contentResolver, it))
                } else {
                    MediaStore.Images.Media.getBitmap(this.contentResolver, it)
                }

                //BitmapPainter只能接收ImageBitmap类型
                painter.value = BitmapPainter(bitmap.asImageBitmap())
            }
        }


                        Button(onClick = {
                            // 这会启动一个intent并指定文件格式
                            mGalleryLauncher.launch("image/*")
                        }) {
                            Text(text = "打开相册")
                        }

                        painter.value?.let {
                            androidx.compose.foundation.Image(painter = it,
                                contentDescription = "取来的照片",
                                modifier = Modifier.size(width = 300.dp, height = 200.dp))
                        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值