使用第三方开源ucrop 裁剪图片时,将相机拍摄完成后返回的uri,直接放入UCrop.of(),会出现Bounds for bitmap could not be retrieved from Uri 报错
解决方法(kotlin1.6):
使用 registerForActivityResult(ActivityResultContracts.TakePicturePreview()) {}
该方法会直接返回bitmap 将bitmap 另行保存后,再将对应的uri放入UCrop.of()就可以了
代码:
//拍照
private val takePhoto =
registerForActivityResult(ActivityResultContracts.TakePicturePreview()) {
if (it !=null) {
val fileName="takePhoto${System.currentTimeMillis()}.jpg"
val filePath=mContext.getExternalFilesDir("PicturesCache")!!.path
FileUtil.saveBitmap(it,fileName,filePath)
startCrop(Uri.fromFile(File(filePath,fileName)))
}
}
takePhoto.launch(null)
本文介绍了一种解决使用UCrop进行图片裁剪时出现的BoundsforbitmapcouldnotberetrievedfromUri错误的方法。通过使用TakePicturePreview获取Bitmap并保存后再进行裁剪,可以有效避免此问题。
9747

被折叠的 条评论
为什么被折叠?



