Как мне получить растровое изображение изображения? - PullRequest
0 голосов
/ 14 июля 2020

В моей функции 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 и не считает foodBitmap Bitmap. Как мне исправить эту строку кода?

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Предполагаемый тип foodBitmap - это не Bitmap, а тип Bitmap?, допускающий значение NULL. Таким образом, у вас есть три варианта:

  1. Изменить код инициализации foodBitmap на:

    val foodBitmap = Objects.requireNonNull(Objects.requireNonNull(data)!!.extras)!!["data"] as Bitmap
    
  2. В другой вашей функции измените параметр на Bitmap? или

  3. Когда вы вызываете эту функцию, используйте функцию let:

    foodBitmap?.let { otherFunction(it) }
    
0 голосов
/ 14 июля 2020

Вы можете просто иметь это: -

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, и вы можете напрямую передать это в свою функцию.

...