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
相关产品推荐
相关产品推荐

