在上传到Android中的服务器之前,在预览中显示图像

时间:2019-02-27 09:13:35

标签: android image kotlin retrofit android-image

我正在使用Kotlin中的图像,并且尝试使用翻新将图像上传到服务器。但是在上传之前,我想在预览中显示图像。我一直在阅读有关如何执行此操作的信息,但仍然没有找到正确的解决方案。 这是直到现在的我的代码

sudo apt-get update

请帮助我!

2 个答案:

答案 0 :(得分:0)

从图库中选择图像或从手机摄像头捕获图像后,可以使用 Crop Intent

来裁剪图像
  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)
    }

答案 1 :(得分:0)

如果您只想预览显示缩略图,则可以使用以下代码获取。

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开发人员网站上参考完整的实现here