46

Glide を使用してローカル ストレージから画像を読み込もうとしていますが、成功しません。

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

これは私が得るエラーです:

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)
4

6 に答える 6

116

File誰かが応答するのを待っている間に、からインスタンスを作成しUriてロードしようとしました。できます!変!

Glide.with(mContext)
    .load(new File(pictureUri.getPath())) // Uri of the picture
    .transform(new CircleTransform(..))
    .into(profileAvatar);
于 2015-09-01T12:54:09.337 に答える
14

インスタンスを渡す場合は、Uri準拠している方がよいでしょう。あなたのインスタンスにはスキーマ ( ) がないようですfile://

どのようUriにモデルがロードされStringているかを確認しFileて、奇妙さを暴くことができます:)

于 2015-10-01T10:38:21.910 に答える
8

ファイル パスの場合は、直接渡すことができます。Glide 4.8.0 でテスト済み

 Glide.with(context)
  .load(pictureUri.getPath())
  .transform(new CircleTransform(..))
  .into(profileAvatar);
于 2018-10-25T22:39:49.623 に答える
6

私の場合、Android 10 でエミュレーターを実行します。セキュリティ上の理由により、レガシー外部ストレージへのアクセスはdisabledデフォルトで行われるため、次のコードをAndroidmanifestファイルに追加します

<application android:requestLegacyExternalStorage="true" 
.....
.....

</application>

外部ストレージを読み書きするためのユーザー権限が含まれていることを確認してください

于 2020-05-01T05:28:48.767 に答える
-1

File オブジェクトを作成せずにこれを試してみましたが、正常に動作します。

public static void setImageUrlFromUri(ImageView imageView, String imageUrl) {
        if (!TextUtils.isEmpty(imageUrl)) {
            Glide.with(imageView.getContext())
                    .load(imageUrl)
                    .into(imageView);
        }
    }
于 2019-10-22T20:14:24.073 に答える