如何获取图像的位图



在我的onActivityResult函数中,我有以下几行代码:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == CAMERA_REQUEST_CODE) {
val foodBitmap = Objects.requireNonNull(Objects.requireNonNull(data)!!.extras)!!["data"] as Bitmap?
food_image.setImageBitmap(foodBitmap)
}
super.onActivityResult(requestCode, resultCode, data)
}

对于foodBitmap,它的推断类型是Bitmap,但我需要确保它的类型是我正在使用的另一个函数的Bitmap,该函数需要类型为Bitmap的参数。我目前无法将foodBitmap传递到该函数中,因为它期望Bitmap,而不认为foodBitmapBitmap。我该如何修复那行代码?

foodBitmap的推断类型不是Bitmap,而是可为null的类型Bitmap?。因此,您有三种选择:

  1. 将初始化foodBitmap的代码更改为:

    val foodBitmap = Objects.requireNonNull(Objects.requireNonNull(data)!!.extras)!!["data"] as Bitmap
    
  2. 在您的其他函数中,将参数更改为Bitmap?

  3. 当您调用该函数时,请使用let函数:

    foodBitmap?.let { otherFunction(it) }
    

您可以简单地拥有以下内容:-

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == CAMERA_REQUEST_CODE && data != null) {
val foodBitmap = data.extras?.get("data") as Bitmap
food_image.setImageBitmap(foodBitmap)
}
}

您将得到foodBitmap作为Bitmap,您可以直接将其传递到您的函数中。

相关内容

  • 没有找到相关文章

最新更新