2015-09-01 16 views
19

Próbuję użyć Glide do załadowania obrazu z lokalnego magazynu bez powodzenia.Glide załadować lokalny obraz przez Uri.

Glide.with(mContext) 
    .load(pictureUri) // Uri of the picture 
    .transform(new CircleTransform(..)) 
    .into(profileAvatar); 

Jest to błąd otrzymuję:

java.lang.Exception: Failed to load model: '/storage/emulated/0/DCIM/Camera/IMG_20150831_180900.jpg' 
at com.bumptech.glide.request.GenericRequest.onSizeReady(GenericRequest.java:441) 
at com.bumptech.glide.request.target.ViewTarget$SizeDeterminer.getSize(ViewTarget.java:211) 
at com.bumptech.glide.request.target.ViewTarget.getSize(ViewTarget.java:100) 
at com.bumptech.glide.request.GenericRequest.begin(GenericRequest.java:272) 
at com.bumptech.glide.manager.RequestTracker.resumeRequests(RequestTracker.java:83) 
at com.bumptech.glide.RequestManager.resumeRequests(RequestManager.java:180) 
at com.bumptech.glide.RequestManager.onStart(RequestManager.java:203) 
at com.bumptech.glide.manager.ActivityFragmentLifecycle.onStart(ActivityFragmentLifecycle.java:50) 
at com.bumptech.glide.manager.SupportRequestManagerFragment.onStart(SupportRequestManagerFragment.java:135) 
at android.support.v4.app.Fragment.performStart(Fragment.java:1986) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1051) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1197) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1179) 
at android.support.v4.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:1996) 
at android.support.v4.app.FragmentController.dispatchStart(FragmentController.java:176) 
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:517) 
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236) 
at android.app.Activity.performStart(Activity.java:6006) 
at android.app.Activity.performRestart(Activity.java:6063) 
at android.app.Activity.performResume(Activity.java:6068) 
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2975) 
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3017) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5254) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
+0

można proszę sprawdzić ten link https://github.com/bumptech/glide/issues/155 –

+0

Już to zrobiłem, ale nie okazało się, że to użyteczne. Sprawdź moją odpowiedź ... jeśli utworzysz instancję pliku wskazującą lokalizację Uri, zadziała. To dziwne. –

+0

@Turdor Luca ok –

Odpowiedz

64

Czekając na kogoś do odpowiedzi, próbowałem zrobić instancji File z Uri i załadować to. To działa! Dziwne!

Glide.with(mContext) 
    .load(new File(pictureUri.getPath())) // Uri of the picture 
    .transform(new CircleTransform(..)) 
    .into(profileAvatar); 
+0

Działa, ale awatary ładują się z małym opóźnieniem z folderu zasobów w jakiś sposób –

8

Jeśli przekazać instancję Uri to lepiej być zgodne, wygląda twoja nie posiada schematu (file://).

Można sprawdzić jak Uri, String i File modele są ładowane do obalić tajemniczości :)

0

upewnić, że Uri jest z pliku.

Uri photoUri = Uri.fromFile(new File(preferences.getPhotoUrl())); 

Glide.with(this).load(photoUri).into(civUserProfilePhoto); 
Powiązane problemy