Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-图像裁剪不加载图像_Java_Android_Android Studio_Ucrop - Fatal编程技术网

Java Android-图像裁剪不加载图像

Java Android-图像裁剪不加载图像,java,android,android-studio,ucrop,Java,Android,Android Studio,Ucrop,我想剪下我从画廊或相机拍的照片。但是我在裁剪活动中看不到这张照片。它就是不来。我用相机拍了一张照片,然后开始切割活动。屏幕如下所示: 摄像头和onActivityResult private File createImageFile() throws IOException { // Create an image file name String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").f

我想剪下我从画廊或相机拍的照片。但是我在裁剪活动中看不到这张照片。它就是不来。我用相机拍了一张照片,然后开始切割活动。屏幕如下所示:

摄像头和onActivityResult

    private File createImageFile() throws IOException {
        // Create an image file name
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        String imageFileName = "JPEG_" + timeStamp + "_";
        File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        File image = File.createTempFile(
                imageFileName,  /* prefix */
                ".jpg",         /* suffix */
                storageDir      /* directory */
        );

        // Save a file: path for use with ACTION_VIEW intents
        currentPhotoPath = image.getAbsolutePath();
        return image;
    }

    private void dispatchTakePictureIntent() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        // Ensure that there's a camera activity to handle the intent
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            // Create the File where the photo should go
            File photoFile = null;
            try {
                photoFile = createImageFile();
            } catch (IOException ex) {
                // Error occurred while creating the File
                Log.d("FotografHata",""+ex);
            }
            // Continue only if the File was successfully created
            if (photoFile != null) {
                Uri photoURI = FileProvider.getUriForFile(this,
                        "com.maksu.aquarium.fileprovider",
                        photoFile);
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
                startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
            }
        }
    }

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK) {
        Uri uri = Uri.parse(currentPhotoPath);
        openCropActivity(uri, uri);
    } else if (requestCode == UCrop.REQUEST_CROP && resultCode == RESULT_OK) {
        Uri uri = UCrop.getOutput(data);
    }
}
openCropActivity

private void openCropActivity(Uri girenUri, Uri cikanUri) {
    UCrop.of(girenUri, cikanUri)
            .withAspectRatio(16, 9)
            .start(this);
}

解决方案:

private String filePath;
private ImagePicker imagePicker;
private CameraImagePicker cameraImagePicker;

private void pickImage() {
        //showProgressBarWithoutHide();

        if (AppUtils.isValidContext(activity)) {
            imagePicker = new ImagePicker(activity);
            imagePicker.setImagePickerCallback(pickerCallback);
            //imagePicker.allowMultiple(); // Default is false
            imagePicker.shouldGenerateMetadata(false); // Default is true
            imagePicker.shouldGenerateThumbnails(false); // Default is true
            imagePicker.pickImage();
        }
    }

    private void cameraImg() {

        if (AppUtils.isValidContext(activity)) {
            if (!SystemUtils.checkForCamera(activity)) {
                Snackbar.make(btnAddToGallery, "Your device doesn't support camera", Snackbar.LENGTH_LONG).show();
                return;
            }
            cameraImagePicker = new CameraImagePicker(activity);
            cameraImagePicker.setImagePickerCallback(pickerCallback);
            cameraImagePicker.shouldGenerateMetadata(false); // Default is true
            cameraImagePicker.shouldGenerateThumbnails(false); // Default is true
            filePath = cameraImagePicker.pickImage();

            Log.i(TAG, "filepath: " + filePath);
        }
    }

 ImagePickerCallback pickerCallback = new ImagePickerCallback() {
    @Override
    public void onImagesChosen(List<ChosenImage> list) {
        try {
            Log.i(TAG, "onImagesChosen() " + list.size());

            if (list.size() == 0) {
                Snackbar.make(btnAddToGallery, R.string.err_failed_to_pick_img, Snackbar.LENGTH_LONG).show();
                return;
            }
            final ChosenImage chosenImage = list.get(0);


            if (AppUtils.isValidContext(activity) && isAdded()) {
                activity.runOnUiThread(new Runnable() {

                    @Override
                    public void run() {

                        if (chosenImage != null) {
                            Log.i(TAG, "getOriginalPath Path:" + chosenImage.getOriginalPath());

                            validateImagePath(chosenImage.getOriginalPath());

                        } else {
                            //hideProgressBar();
                            Snackbar.make(btnAddToGallery, "Failed to choose image", Snackbar.LENGTH_LONG).show();
                            Log.e(TAG, "Failed to choose image");
                        }
                    }
                });
            }
        } catch (Throwable th) {
            th.printStackTrace();
        }
    }

    @Override
    public void onError(String s) {

        //hideProgressBar();
    }


};

private void validateImagePath(String imagePath) {
    String ext = FileUtils.getFileExtension(imagePath);

    Log.i(TAG, "EXT: " + ext);
    if (ext.equals("jpg") || ext.equals("png") || ext.equals("jpeg")) {

        if (imagePath != null) {

            File file = new File(imagePath);
            long length = file.length();

            Log.i(TAG, "File size is: " + length);
            if (length > Constants.MAX_IMAGE_FILE_SIZE) {
                //hideProgressBar();
                Snackbar.make(btnAddToGallery, getString(R.string.err_img_too_large), Snackbar.LENGTH_LONG).show();
                FileUtils.deleteFileFromPath(filePath);
                return;
            }

            filePath = imagePath;
            PerformCrop();

        } else {
            //hideProgressBar();
            Toast.makeText(activity, R.string.err_failed_to_pick_img, Toast.LENGTH_SHORT).show();
        }
    } else {
        //hideProgressBar();
        Snackbar.make(btnAddToGallery, "Please select valid file.", Snackbar.LENGTH_LONG).show();
        Log.e(TAG, "Please select valid file");
    }
}
private void PerformCrop() {            
        try {
            Uri sourceUri = Uri.parse("file://" + filePath);
            Uri destUri = Uri.fromFile(new File(activity.getFilesDir(), "U_Crop_Image_" + System.currentTimeMillis() + ".png")); 

            UCrop uCrop = UCrop.of(sourceUri, destUri); //Uri.fromFile(new File(getCacheDir(), destinationFileName))

            uCrop = basisConfig(uCrop);
            uCrop = advancedConfig(uCrop);

            uCrop.start(activity);

        } catch (Throwable e) {
            e.printStackTrace();
        }

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

        switch (requestCode) {
            case Picker.PICK_IMAGE_DEVICE:

                if (resultCode == Activity.RESULT_OK && data != null) {

                    if (imagePicker == null && AppUtils.isValidContext(activity)) {
                        imagePicker = new ImagePicker(activity);
                        imagePicker.setImagePickerCallback(pickerCallback);
                    }
                    if (imagePicker != null) {
                        imagePicker.submit(data);
                    }
                } else {
                    Log.e(TAG, "PICK_IMAGE_DEVICE intent is null or result code is " + resultCode);
                }

                break;
            case Picker.PICK_IMAGE_CAMERA:

                if (resultCode == Activity.RESULT_OK && data != null) {

                    if (cameraImagePicker == null && AppUtils.isValidContext(activity)) {
                        cameraImagePicker = new CameraImagePicker(activity);
                        cameraImagePicker.reinitialize(filePath);
                        // OR in one statement
                        // imagePicker = new CameraImagePicker(Activity.getActivity(), outputPath);
                        cameraImagePicker.setImagePickerCallback(pickerCallback);
                    }
                    if (cameraImagePicker != null) {
                        cameraImagePicker.submit(data);
                    }
                } else {
                    Log.e(TAG, "PICK_IMAGE_CAMERA intent is null or result code is " + resultCode);
                    if (filePath != null && filePath.length() > 0) {
                        PerformCrop();
                    } else {
                        Snackbar.make(btnAddToGallery, R.string.err_failed_to_pick_img, Snackbar.LENGTH_LONG).show();
                    }

                }

                break;
            case UCrop.REQUEST_CROP:
                if (resultCode == Activity.RESULT_OK) {
                    final Uri resultUri = UCrop.getOutput(data);
                    Log.e(TAG, "Cropped image: " + resultUri);

                    try {
                        if (resultUri != null && resultUri.toString().length() > 0) {
                            /* Remove dummy image */
//                            set crop Image... 
                        }
                    } catch (Throwable e) {
                        e.printStackTrace();
                    }

                    //showCropAd();

                } else if (resultCode == UCrop.RESULT_ERROR) {

                    try {
                        final Throwable cropError = UCrop.getError(data);
                        if (cropError != null && cropError.getMessage() != null) {
                            Log.e(TAG, "cropError: " + cropError.getMessage());
                        }
                    } catch (Throwable e) {
                        e.printStackTrace();
                    }
                }

                break;
          }
    }
我正在使用多选取器库使用图库照片并选取照片。选择照片后,我打开的照片是ucrop库

在你的项目中放在班级下面

遵循代码:

private String filePath;
private ImagePicker imagePicker;
private CameraImagePicker cameraImagePicker;

private void pickImage() {
        //showProgressBarWithoutHide();

        if (AppUtils.isValidContext(activity)) {
            imagePicker = new ImagePicker(activity);
            imagePicker.setImagePickerCallback(pickerCallback);
            //imagePicker.allowMultiple(); // Default is false
            imagePicker.shouldGenerateMetadata(false); // Default is true
            imagePicker.shouldGenerateThumbnails(false); // Default is true
            imagePicker.pickImage();
        }
    }

    private void cameraImg() {

        if (AppUtils.isValidContext(activity)) {
            if (!SystemUtils.checkForCamera(activity)) {
                Snackbar.make(btnAddToGallery, "Your device doesn't support camera", Snackbar.LENGTH_LONG).show();
                return;
            }
            cameraImagePicker = new CameraImagePicker(activity);
            cameraImagePicker.setImagePickerCallback(pickerCallback);
            cameraImagePicker.shouldGenerateMetadata(false); // Default is true
            cameraImagePicker.shouldGenerateThumbnails(false); // Default is true
            filePath = cameraImagePicker.pickImage();

            Log.i(TAG, "filepath: " + filePath);
        }
    }

 ImagePickerCallback pickerCallback = new ImagePickerCallback() {
    @Override
    public void onImagesChosen(List<ChosenImage> list) {
        try {
            Log.i(TAG, "onImagesChosen() " + list.size());

            if (list.size() == 0) {
                Snackbar.make(btnAddToGallery, R.string.err_failed_to_pick_img, Snackbar.LENGTH_LONG).show();
                return;
            }
            final ChosenImage chosenImage = list.get(0);


            if (AppUtils.isValidContext(activity) && isAdded()) {
                activity.runOnUiThread(new Runnable() {

                    @Override
                    public void run() {

                        if (chosenImage != null) {
                            Log.i(TAG, "getOriginalPath Path:" + chosenImage.getOriginalPath());

                            validateImagePath(chosenImage.getOriginalPath());

                        } else {
                            //hideProgressBar();
                            Snackbar.make(btnAddToGallery, "Failed to choose image", Snackbar.LENGTH_LONG).show();
                            Log.e(TAG, "Failed to choose image");
                        }
                    }
                });
            }
        } catch (Throwable th) {
            th.printStackTrace();
        }
    }

    @Override
    public void onError(String s) {

        //hideProgressBar();
    }


};

private void validateImagePath(String imagePath) {
    String ext = FileUtils.getFileExtension(imagePath);

    Log.i(TAG, "EXT: " + ext);
    if (ext.equals("jpg") || ext.equals("png") || ext.equals("jpeg")) {

        if (imagePath != null) {

            File file = new File(imagePath);
            long length = file.length();

            Log.i(TAG, "File size is: " + length);
            if (length > Constants.MAX_IMAGE_FILE_SIZE) {
                //hideProgressBar();
                Snackbar.make(btnAddToGallery, getString(R.string.err_img_too_large), Snackbar.LENGTH_LONG).show();
                FileUtils.deleteFileFromPath(filePath);
                return;
            }

            filePath = imagePath;
            PerformCrop();

        } else {
            //hideProgressBar();
            Toast.makeText(activity, R.string.err_failed_to_pick_img, Toast.LENGTH_SHORT).show();
        }
    } else {
        //hideProgressBar();
        Snackbar.make(btnAddToGallery, "Please select valid file.", Snackbar.LENGTH_LONG).show();
        Log.e(TAG, "Please select valid file");
    }
}
private void PerformCrop() {            
        try {
            Uri sourceUri = Uri.parse("file://" + filePath);
            Uri destUri = Uri.fromFile(new File(activity.getFilesDir(), "U_Crop_Image_" + System.currentTimeMillis() + ".png")); 

            UCrop uCrop = UCrop.of(sourceUri, destUri); //Uri.fromFile(new File(getCacheDir(), destinationFileName))

            uCrop = basisConfig(uCrop);
            uCrop = advancedConfig(uCrop);

            uCrop.start(activity);

        } catch (Throwable e) {
            e.printStackTrace();
        }

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

        switch (requestCode) {
            case Picker.PICK_IMAGE_DEVICE:

                if (resultCode == Activity.RESULT_OK && data != null) {

                    if (imagePicker == null && AppUtils.isValidContext(activity)) {
                        imagePicker = new ImagePicker(activity);
                        imagePicker.setImagePickerCallback(pickerCallback);
                    }
                    if (imagePicker != null) {
                        imagePicker.submit(data);
                    }
                } else {
                    Log.e(TAG, "PICK_IMAGE_DEVICE intent is null or result code is " + resultCode);
                }

                break;
            case Picker.PICK_IMAGE_CAMERA:

                if (resultCode == Activity.RESULT_OK && data != null) {

                    if (cameraImagePicker == null && AppUtils.isValidContext(activity)) {
                        cameraImagePicker = new CameraImagePicker(activity);
                        cameraImagePicker.reinitialize(filePath);
                        // OR in one statement
                        // imagePicker = new CameraImagePicker(Activity.getActivity(), outputPath);
                        cameraImagePicker.setImagePickerCallback(pickerCallback);
                    }
                    if (cameraImagePicker != null) {
                        cameraImagePicker.submit(data);
                    }
                } else {
                    Log.e(TAG, "PICK_IMAGE_CAMERA intent is null or result code is " + resultCode);
                    if (filePath != null && filePath.length() > 0) {
                        PerformCrop();
                    } else {
                        Snackbar.make(btnAddToGallery, R.string.err_failed_to_pick_img, Snackbar.LENGTH_LONG).show();
                    }

                }

                break;
            case UCrop.REQUEST_CROP:
                if (resultCode == Activity.RESULT_OK) {
                    final Uri resultUri = UCrop.getOutput(data);
                    Log.e(TAG, "Cropped image: " + resultUri);

                    try {
                        if (resultUri != null && resultUri.toString().length() > 0) {
                            /* Remove dummy image */
//                            set crop Image... 
                        }
                    } catch (Throwable e) {
                        e.printStackTrace();
                    }

                    //showCropAd();

                } else if (resultCode == UCrop.RESULT_ERROR) {

                    try {
                        final Throwable cropError = UCrop.getError(data);
                        if (cropError != null && cropError.getMessage() != null) {
                            Log.e(TAG, "cropError: " + cropError.getMessage());
                        }
                    } catch (Throwable e) {
                        e.printStackTrace();
                    }
                }

                break;
          }
    }
onActivityResult:

private String filePath;
private ImagePicker imagePicker;
private CameraImagePicker cameraImagePicker;

private void pickImage() {
        //showProgressBarWithoutHide();

        if (AppUtils.isValidContext(activity)) {
            imagePicker = new ImagePicker(activity);
            imagePicker.setImagePickerCallback(pickerCallback);
            //imagePicker.allowMultiple(); // Default is false
            imagePicker.shouldGenerateMetadata(false); // Default is true
            imagePicker.shouldGenerateThumbnails(false); // Default is true
            imagePicker.pickImage();
        }
    }

    private void cameraImg() {

        if (AppUtils.isValidContext(activity)) {
            if (!SystemUtils.checkForCamera(activity)) {
                Snackbar.make(btnAddToGallery, "Your device doesn't support camera", Snackbar.LENGTH_LONG).show();
                return;
            }
            cameraImagePicker = new CameraImagePicker(activity);
            cameraImagePicker.setImagePickerCallback(pickerCallback);
            cameraImagePicker.shouldGenerateMetadata(false); // Default is true
            cameraImagePicker.shouldGenerateThumbnails(false); // Default is true
            filePath = cameraImagePicker.pickImage();

            Log.i(TAG, "filepath: " + filePath);
        }
    }

 ImagePickerCallback pickerCallback = new ImagePickerCallback() {
    @Override
    public void onImagesChosen(List<ChosenImage> list) {
        try {
            Log.i(TAG, "onImagesChosen() " + list.size());

            if (list.size() == 0) {
                Snackbar.make(btnAddToGallery, R.string.err_failed_to_pick_img, Snackbar.LENGTH_LONG).show();
                return;
            }
            final ChosenImage chosenImage = list.get(0);


            if (AppUtils.isValidContext(activity) && isAdded()) {
                activity.runOnUiThread(new Runnable() {

                    @Override
                    public void run() {

                        if (chosenImage != null) {
                            Log.i(TAG, "getOriginalPath Path:" + chosenImage.getOriginalPath());

                            validateImagePath(chosenImage.getOriginalPath());

                        } else {
                            //hideProgressBar();
                            Snackbar.make(btnAddToGallery, "Failed to choose image", Snackbar.LENGTH_LONG).show();
                            Log.e(TAG, "Failed to choose image");
                        }
                    }
                });
            }
        } catch (Throwable th) {
            th.printStackTrace();
        }
    }

    @Override
    public void onError(String s) {

        //hideProgressBar();
    }


};

private void validateImagePath(String imagePath) {
    String ext = FileUtils.getFileExtension(imagePath);

    Log.i(TAG, "EXT: " + ext);
    if (ext.equals("jpg") || ext.equals("png") || ext.equals("jpeg")) {

        if (imagePath != null) {

            File file = new File(imagePath);
            long length = file.length();

            Log.i(TAG, "File size is: " + length);
            if (length > Constants.MAX_IMAGE_FILE_SIZE) {
                //hideProgressBar();
                Snackbar.make(btnAddToGallery, getString(R.string.err_img_too_large), Snackbar.LENGTH_LONG).show();
                FileUtils.deleteFileFromPath(filePath);
                return;
            }

            filePath = imagePath;
            PerformCrop();

        } else {
            //hideProgressBar();
            Toast.makeText(activity, R.string.err_failed_to_pick_img, Toast.LENGTH_SHORT).show();
        }
    } else {
        //hideProgressBar();
        Snackbar.make(btnAddToGallery, "Please select valid file.", Snackbar.LENGTH_LONG).show();
        Log.e(TAG, "Please select valid file");
    }
}
private void PerformCrop() {            
        try {
            Uri sourceUri = Uri.parse("file://" + filePath);
            Uri destUri = Uri.fromFile(new File(activity.getFilesDir(), "U_Crop_Image_" + System.currentTimeMillis() + ".png")); 

            UCrop uCrop = UCrop.of(sourceUri, destUri); //Uri.fromFile(new File(getCacheDir(), destinationFileName))

            uCrop = basisConfig(uCrop);
            uCrop = advancedConfig(uCrop);

            uCrop.start(activity);

        } catch (Throwable e) {
            e.printStackTrace();
        }

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

        switch (requestCode) {
            case Picker.PICK_IMAGE_DEVICE:

                if (resultCode == Activity.RESULT_OK && data != null) {

                    if (imagePicker == null && AppUtils.isValidContext(activity)) {
                        imagePicker = new ImagePicker(activity);
                        imagePicker.setImagePickerCallback(pickerCallback);
                    }
                    if (imagePicker != null) {
                        imagePicker.submit(data);
                    }
                } else {
                    Log.e(TAG, "PICK_IMAGE_DEVICE intent is null or result code is " + resultCode);
                }

                break;
            case Picker.PICK_IMAGE_CAMERA:

                if (resultCode == Activity.RESULT_OK && data != null) {

                    if (cameraImagePicker == null && AppUtils.isValidContext(activity)) {
                        cameraImagePicker = new CameraImagePicker(activity);
                        cameraImagePicker.reinitialize(filePath);
                        // OR in one statement
                        // imagePicker = new CameraImagePicker(Activity.getActivity(), outputPath);
                        cameraImagePicker.setImagePickerCallback(pickerCallback);
                    }
                    if (cameraImagePicker != null) {
                        cameraImagePicker.submit(data);
                    }
                } else {
                    Log.e(TAG, "PICK_IMAGE_CAMERA intent is null or result code is " + resultCode);
                    if (filePath != null && filePath.length() > 0) {
                        PerformCrop();
                    } else {
                        Snackbar.make(btnAddToGallery, R.string.err_failed_to_pick_img, Snackbar.LENGTH_LONG).show();
                    }

                }

                break;
            case UCrop.REQUEST_CROP:
                if (resultCode == Activity.RESULT_OK) {
                    final Uri resultUri = UCrop.getOutput(data);
                    Log.e(TAG, "Cropped image: " + resultUri);

                    try {
                        if (resultUri != null && resultUri.toString().length() > 0) {
                            /* Remove dummy image */
//                            set crop Image... 
                        }
                    } catch (Throwable e) {
                        e.printStackTrace();
                    }

                    //showCropAd();

                } else if (resultCode == UCrop.RESULT_ERROR) {

                    try {
                        final Throwable cropError = UCrop.getError(data);
                        if (cropError != null && cropError.getMessage() != null) {
                            Log.e(TAG, "cropError: " + cropError.getMessage());
                        }
                    } catch (Throwable e) {
                        e.printStackTrace();
                    }
                }

                break;
          }
    }
结果:

private String filePath;
private ImagePicker imagePicker;
private CameraImagePicker cameraImagePicker;

private void pickImage() {
        //showProgressBarWithoutHide();

        if (AppUtils.isValidContext(activity)) {
            imagePicker = new ImagePicker(activity);
            imagePicker.setImagePickerCallback(pickerCallback);
            //imagePicker.allowMultiple(); // Default is false
            imagePicker.shouldGenerateMetadata(false); // Default is true
            imagePicker.shouldGenerateThumbnails(false); // Default is true
            imagePicker.pickImage();
        }
    }

    private void cameraImg() {

        if (AppUtils.isValidContext(activity)) {
            if (!SystemUtils.checkForCamera(activity)) {
                Snackbar.make(btnAddToGallery, "Your device doesn't support camera", Snackbar.LENGTH_LONG).show();
                return;
            }
            cameraImagePicker = new CameraImagePicker(activity);
            cameraImagePicker.setImagePickerCallback(pickerCallback);
            cameraImagePicker.shouldGenerateMetadata(false); // Default is true
            cameraImagePicker.shouldGenerateThumbnails(false); // Default is true
            filePath = cameraImagePicker.pickImage();

            Log.i(TAG, "filepath: " + filePath);
        }
    }

 ImagePickerCallback pickerCallback = new ImagePickerCallback() {
    @Override
    public void onImagesChosen(List<ChosenImage> list) {
        try {
            Log.i(TAG, "onImagesChosen() " + list.size());

            if (list.size() == 0) {
                Snackbar.make(btnAddToGallery, R.string.err_failed_to_pick_img, Snackbar.LENGTH_LONG).show();
                return;
            }
            final ChosenImage chosenImage = list.get(0);


            if (AppUtils.isValidContext(activity) && isAdded()) {
                activity.runOnUiThread(new Runnable() {

                    @Override
                    public void run() {

                        if (chosenImage != null) {
                            Log.i(TAG, "getOriginalPath Path:" + chosenImage.getOriginalPath());

                            validateImagePath(chosenImage.getOriginalPath());

                        } else {
                            //hideProgressBar();
                            Snackbar.make(btnAddToGallery, "Failed to choose image", Snackbar.LENGTH_LONG).show();
                            Log.e(TAG, "Failed to choose image");
                        }
                    }
                });
            }
        } catch (Throwable th) {
            th.printStackTrace();
        }
    }

    @Override
    public void onError(String s) {

        //hideProgressBar();
    }


};

private void validateImagePath(String imagePath) {
    String ext = FileUtils.getFileExtension(imagePath);

    Log.i(TAG, "EXT: " + ext);
    if (ext.equals("jpg") || ext.equals("png") || ext.equals("jpeg")) {

        if (imagePath != null) {

            File file = new File(imagePath);
            long length = file.length();

            Log.i(TAG, "File size is: " + length);
            if (length > Constants.MAX_IMAGE_FILE_SIZE) {
                //hideProgressBar();
                Snackbar.make(btnAddToGallery, getString(R.string.err_img_too_large), Snackbar.LENGTH_LONG).show();
                FileUtils.deleteFileFromPath(filePath);
                return;
            }

            filePath = imagePath;
            PerformCrop();

        } else {
            //hideProgressBar();
            Toast.makeText(activity, R.string.err_failed_to_pick_img, Toast.LENGTH_SHORT).show();
        }
    } else {
        //hideProgressBar();
        Snackbar.make(btnAddToGallery, "Please select valid file.", Snackbar.LENGTH_LONG).show();
        Log.e(TAG, "Please select valid file");
    }
}
private void PerformCrop() {            
        try {
            Uri sourceUri = Uri.parse("file://" + filePath);
            Uri destUri = Uri.fromFile(new File(activity.getFilesDir(), "U_Crop_Image_" + System.currentTimeMillis() + ".png")); 

            UCrop uCrop = UCrop.of(sourceUri, destUri); //Uri.fromFile(new File(getCacheDir(), destinationFileName))

            uCrop = basisConfig(uCrop);
            uCrop = advancedConfig(uCrop);

            uCrop.start(activity);

        } catch (Throwable e) {
            e.printStackTrace();
        }

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

        switch (requestCode) {
            case Picker.PICK_IMAGE_DEVICE:

                if (resultCode == Activity.RESULT_OK && data != null) {

                    if (imagePicker == null && AppUtils.isValidContext(activity)) {
                        imagePicker = new ImagePicker(activity);
                        imagePicker.setImagePickerCallback(pickerCallback);
                    }
                    if (imagePicker != null) {
                        imagePicker.submit(data);
                    }
                } else {
                    Log.e(TAG, "PICK_IMAGE_DEVICE intent is null or result code is " + resultCode);
                }

                break;
            case Picker.PICK_IMAGE_CAMERA:

                if (resultCode == Activity.RESULT_OK && data != null) {

                    if (cameraImagePicker == null && AppUtils.isValidContext(activity)) {
                        cameraImagePicker = new CameraImagePicker(activity);
                        cameraImagePicker.reinitialize(filePath);
                        // OR in one statement
                        // imagePicker = new CameraImagePicker(Activity.getActivity(), outputPath);
                        cameraImagePicker.setImagePickerCallback(pickerCallback);
                    }
                    if (cameraImagePicker != null) {
                        cameraImagePicker.submit(data);
                    }
                } else {
                    Log.e(TAG, "PICK_IMAGE_CAMERA intent is null or result code is " + resultCode);
                    if (filePath != null && filePath.length() > 0) {
                        PerformCrop();
                    } else {
                        Snackbar.make(btnAddToGallery, R.string.err_failed_to_pick_img, Snackbar.LENGTH_LONG).show();
                    }

                }

                break;
            case UCrop.REQUEST_CROP:
                if (resultCode == Activity.RESULT_OK) {
                    final Uri resultUri = UCrop.getOutput(data);
                    Log.e(TAG, "Cropped image: " + resultUri);

                    try {
                        if (resultUri != null && resultUri.toString().length() > 0) {
                            /* Remove dummy image */
//                            set crop Image... 
                        }
                    } catch (Throwable e) {
                        e.printStackTrace();
                    }

                    //showCropAd();

                } else if (resultCode == UCrop.RESULT_ERROR) {

                    try {
                        final Throwable cropError = UCrop.getError(data);
                        if (cropError != null && cropError.getMessage() != null) {
                            Log.e(TAG, "cropError: " + cropError.getMessage());
                        }
                    } catch (Throwable e) {
                        e.printStackTrace();
                    }
                }

                break;
          }
    }
我的应用程序演示如下图所示:


此代码仅供参考。如果您仍然面临任何问题,请让我知道。很高兴帮助您。

我使用
Uri.parse(myFile)
传递源和目标
Uri
,所以它一直在加载

对我有用的是我使用了
toUri()
,就像这样

val sourceUri = myFile.toUri()