如何获取图像的位图?

How do I get the bitmap of an image?

在我的 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,而是可空类型 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,您可以直接将其传递到您的函数中。