我正在从我的 Android Assets 文件夹和缓存中获取图像。
我的 Assets URI是//assets/initial/initialone.jpg
,而我的画廊URI是/data/user/0/packagename/image/image.jpg
.
我无法将这些 URI 提供给 Ucrop android 库。
以下是我到目前为止所做的事情:
File cachePath=new Flie(getCacheDir(),"images")
if(!cachePath.exists())
cachePath.mkdirs();
FileOutputStream fos=new FileOutputStream(cachePath+"/image.jpg");
myImageBitmap.compress(Bitmap.CompressFormat.JPEG,80,fos);
fos.close();
Uri source=Uri.parse(cachePath+"/image.jpg");
Uri destination = Uri.fromFile(new File(getCacheDir(), "cropped"));
UCrop.of(source,destination).start(this);
如果我给出此 Uris,则会收到以下错误:
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.IllegalArgumentException: Invalid Uri schemenull
at com.yalantis.ucrop.task.BitmapLoadTask.processInputUri(BitmapLoadTask.java:184)
at com.yalantis.ucrop.task.BitmapLoadTask.doInBackground(BitmapLoadTask.java:90)
at com.yalantis.ucrop.task.BitmapLoadTask.doInBackground(BitmapLoadTask.java:41)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
最佳答案
试试这个:
Uri url=Uri.fromFile(new File(("yourImagePath")));
我遇到了同样的问题,现在已经解决了。
关于java - 如何在 Yalantis Ucrop 中提供 Assets URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46996601/