uCrop icon indicating copy to clipboard operation
uCrop copied to clipboard

Cut break, TransformImageView: onFailure: setImageUri

Open liukefu2050 opened this issue 4 years ago • 4 comments

Do you want to request a feature or report a bug? bug What is the current behavior? There was an error when cutting. I don't know why. I chose the photo taken by my mobile phone and reported an error It's normal to download pictures from the Internet What is the expected behavior? There was an error when cutting. I don't know why. I chose the photo taken by my mobile phone and reported an error If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem. check out my code:https://github.com/shijingsh/RxGalleryFinal run sample chose the photo taken by your phone Please attach any image files, URL and stack trace that can be used to reproduce the bug. E/TransformImageView: onFailure: setImageUri java.lang.IllegalArgumentException: Bounds for bitmap could not be retrieved from the Uri: [file:///storage/emulated/0/Pictures/1593499654172.jpg] at com.yalantis.ucrop.task.BitmapLoadTask.doInBackground(BitmapLoadTask.java:104) at com.yalantis.ucrop.task.BitmapLoadTask.doInBackground(BitmapLoadTask.java:36) at android.os.AsyncTask$3.call(AsyncTask.java:378) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:919) Which versions of uCrop, and which Android API versions are affected by this issue? Did this work in previous versions of uCrop?

v2.2.5

liukefu2050 avatar Jul 01 '20 08:07 liukefu2050

It's not about ucrop.I have solved the problem and recorded it here, because there is a problem with the code of taking photos, and there is no permission to set

like this

                //This sentence is very important
                captureIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                //Getting URI using fileprovider7
                pictureUri = FileProvider7.getUriForFile(this.getActivity(), fileImagePath);

The complete code: check out my code:https://github.com/shijingsh/RxGalleryFinal I hope I can help some people

      boolean b = PermissionCheckUtils.checkCameraPermission(mMediaActivity, requestStorageAccessPermissionTips, MediaActivity.REQUEST_CAMERA_ACCESS_PERMISSION);
        if (b) {
            boolean image = mConfiguration.isImage();

            Intent captureIntent = image ? new Intent(MediaStore.ACTION_IMAGE_CAPTURE) : new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
            if (captureIntent.resolveActivity(context.getPackageManager()) == null) {
                Toast.makeText(getContext(), R.string.gallery_device_camera_unable, Toast.LENGTH_SHORT).show();
                return;
            }
            if(mConfiguration.isMultipleShot() && image){
                captureIntent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
            }

            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA);
            String filename = String.format(image ? IMAGE_STORE_FILE_NAME : VIDEO_STORE_FILE_NAME, dateFormat.format(new Date()));
     
            File fileImagePath = new File(mImageStoreDir, filename);
            mImagePath = fileImagePath.getAbsolutePath();

            Uri pictureUri = null;

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                //This sentence is very important
                captureIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                //Getting URI using fileprovider7
                pictureUri = FileProvider7.getUriForFile(this.getActivity(), fileImagePath);
            } else {
                pictureUri = Uri.fromFile(fileImagePath);
            }


            captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, pictureUri);        
            if(!image){
                captureIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, mConfiguration.getVideoQuality());
            }


            startActivityForResult(captureIntent, TAKE_IMAGE_REQUEST_CODE);
        }

liukefu2050 avatar Jul 03 '20 02:07 liukefu2050

Resolved this issue after adding android:requestLegacyExternalStorage="true" in my Manifest.

usama1050 avatar Feb 02 '21 08:02 usama1050

I received a similar error. After retrieving the photo from the gallery I got Uri but Ucrop was stopped. You can add "android: requestLegacyExternalStorage =" true "in AndroidManifest.xml". But Google has restricted this permission on Android 11 devices and advised to remove it. So I debugged and edited his library a bit. Class: BitmapLoadTask.java. I noticed an error when granting READ_EXTERNAL_STORAGE permission, if not then the app works fine. So I deleted this part, although I don't know why he should be. From Line 174 to 184 image

chanhbc avatar Apr 29 '21 09:04 chanhbc

I am facing this issue while crop the image. I am using com.github.yalantis:ucrop:2.2.8 . I am facing this issue in Xiaomi Redmi note 8A device and some Realme devices.

2022-04-03 14:26:00.332 23053-23053/com.apps.main E/TransformImageView: onFailure: setImageUri java.lang.IllegalArgumentException: Bounds for bitmap could not be retrieved from the Uri: [content://apps.main.provider/images/JPEG_20220403_142558_4239916797258029201.jpg] at wb.b.b(SourceFile:111) at wb.b.doInBackground(SourceFile:36) at android.os.AsyncTask$3.call(AsyncTask.java:378) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:919)

saymumsany avatar Apr 13 '22 07:04 saymumsany