Показать изображение при предварительном просмотре перед загрузкой на сервер в Android - PullRequest
0 голосов
/ 27 февраля 2019

Я работаю с изображениями в kotlin и пытаюсь загрузить изображение на сервер, используя модификацию.Но перед загрузкой я хотел показать картинку на превью.Я читал о том, как это сделать, но все еще не нашел правильного решения.вот мой код до этого момента

fun chooseImageFromGallery() {
    val galleryIntent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
    startActivityForResult(galleryIntent, GALLERY)
}

private fun takePhotoFromCamera() {
    val cameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
    startActivityForResult(cameraIntent, CAMERA)
}


override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (resultCode == Activity.RESULT_OK)
        when(requestCode){
            GALLERY -> {
                val selectedImage: Uri = data!!.data



            }
        }
}

Пожалуйста, помогите мне!

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Если вы хотите отобразить уменьшенное изображение только для предварительного просмотра, вы можете получить его, используя следующий код.

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        val imageBitmap = data.extras.get("data") as Bitmap
        imageView.setImageBitmap(imageBitmap)
    }
}

Вы можете обратиться к полной реализации здесь на сайте разработчиков Android.

0 голосов
/ 27 февраля 2019

Обрезать изображение после выбора изображения из галереи или захвата изображения с камеры телефона можно с помощью Обрезка изображения

  override fun onActivityResult(requestCode: Int, resultCode: Int, data: 
   Intent?) {
       super.onActivityResult(requestCode, resultCode, data)

       if (resultCode == Activity.RESULT_OK)
       when(requestCode){
          GALLERY -> {
            val selectedImage: Uri = data!!.data
            cropImage(selectedImage,CROP_REQUEST)
          }
          CROP_REQUEST->{

                    if (data != null) {
                        val imageUri = data.data
                     //now you can send this cropped image to the server

                    } 
          }
    }


  // function for croping the image

  fun cropImage(uri: Uri,CROP_REQUEST:Int) {
        this.grantUriPermission(
            "com.android.camera", uri,
            Intent.FLAG_GRANT_WRITE_URI_PERMISSION
        )
        val intent = Intent("com.android.camera.action.CROP")
        intent.setDataAndType(uri, "image/*")
        //Android N need set permission to uri otherwise system camera don't 
        //has permission to access file wait crop
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
        intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION)

        intent.putExtra("crop", "true")
        //The proportion of the crop box is 1:1
        intent.putExtra("aspectX", 1)
        intent.putExtra("aspectY", 1)
        //Crop the output image size
        intent.putExtra("outputX", 500)
        intent.putExtra("outputY", 500)
        //image type
        intent.putExtra("outputFormat", "JPEG")
        intent.putExtra("noFaceDetection", true)
        //true - don't return uri |  false - return uri
        intent.putExtra("return-data", false)

       startActivityForResult(intent, CROP_REQUEST)
    }
...