You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin如何将相册选取图片的Uri转换为Bitmap并存储到Room数据库

功能对齐的Kotlin实现

以下代码和你提供的Java代码逻辑完全一致:

val imageUri = intent.data
val bitmap = MediaStore.Images.Media.getBitmap(contentResolver, imageUri)
val myImgView = findViewById<ImageView>(R.id.my_img_view)
myImgView.setImageBitmap(bitmap)

高版本系统兼容方案

MediaStore.Images.Media.getBitmap 在Android API 29及以上版本已被废弃,推荐使用下方的适配实现,兼容性更强:

val imageUri = intent.data ?: run {
    // 此处处理Uri为空的异常逻辑
    return
}
val bitmap = contentResolver.openInputStream(imageUri)?.use { inputStream ->
    BitmapFactory.decodeStream(inputStream)
} ?: run {
    // 此处处理Bitmap解析失败的异常逻辑
    return
}
findViewById<ImageView>(R.id.my_img_view).setImageBitmap(bitmap)

存入Room数据库的补充实现

你需要将Bitmap转换为字节数组后再存入Room,对应实现如下:

// 可根据实际需求调整压缩格式、压缩质量
val outputStream = ByteArrayOutputStream()
bitmap.compress(Bitmap.CompressFormat.JPEG, 80, outputStream)
val bitmapByteArray = outputStream.toByteArray()
// 将bitmapByteArray作为实体类的字段直接存入Room即可

内容的提问来源于stack exchange,提问作者Edita Komarova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:15:03