裁剪后如何从图库中选取图片并保存在应用程序中?

时间:2018-12-18 10:38:48

标签: java android uri crop

我是Android开发的新手,我尽力从图库中选择图像并在裁剪后保存在应用程序中,但失败了。请帮我解决这个问题。我尝试混合使用不同的代码,但没有任何帮助。

if (resultCode == RESULT_OK) {
    //Uri photoUri = data.getData();
    //if (photoUri != null) {

    // photoPickerIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uri);
    CropImage.activity(android.net.Uri.parse(data.getDataString()))
            .setAspectRatio(1,1)
            .setFixAspectRatio(true)
            .start(activity);
            CropImage.ActivityResult result1 = CropImage.getActivityResult(data);
    if (resultCode == RESULT_OK) {
        iv.setImageURI(result1.getUri());
    } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
        Exception error = result1.getError();
        Log.d(TAG, "onActivityResult: " + error.getMessage());
    }
            //currentImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), photoUri);
            //selectedImage.setImageBitmap(currentImage);

   // }

1 个答案:

答案 0 :(得分:0)

首先在项目Gradle.built(app:odle)文件中添加依赖项

dependencies {
implementaion 'com.theartofdev.edmodo:android-image-cropper:2.8.+'
}

之后,在清单文件中添加以下两个权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

在类中创建一个常量 私有静态最终int REQUEST_FOR_GALLARY = 1; 您将需要此。

之后,将以下代码插入您要打开图库或您使用的任何内容的按钮上。

Intent gallaryIntent = new Intent();
        gallaryIntent.setAction(Intent.ACTION_GET_CONTENT);
        gallaryIntent.setType("image/*");
        startActivityForResult(gallaryIntent, REQUEST_FOR_GALLARY);

之后,重写Activity类的方法onActivityResult 像

 @Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent 
             data) {
                  super.onActivityResult(requestCode, resultCode, data);

         if (requestCode == REQUEST_FOR_GALLARY && resultCode == RESULT_OK && data != 
              null) {

                 Uri imageUri = data.getData();

         CropImage.activity()
                .setGuidelines(CropImageView.Guidelines.ON)
                .start(this);
    }
    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
        CropImage.ActivityResult result = CropImage.getActivityResult(data);

        if (resultCode == RESULT_OK) {


            Uri resultUri = result.getUri();

           //Save image wherever you want to save it 
        }
    }
}

现在根据您的要求更改代码,然后将图像保存到要存储的任何位置。