J'essaie de charger une image dans imageView
via Glide. Mais l'image n'est pas chargée - j'obtiens une erreur. J'utilise le code suivant
GlideApp.with(context)
.load(itemData.getThumbnailUri())
.placeholder(R.mipmap.koya_logo_white)
.error(R.mipmap.ic_image_loading_error)
.into(itemBinding.cover);
Journaux
lide: Load failed for https://s3.amazonaws.com/koya-dev-videos/kindness/8da807aa-1e1e-413d-bf9b-5bb084646593/medialibrary/9456621508/videos/1eb78337-d569-41bd-95ad-153d9098de03.png with size [1080x1080]
class com.bumptech.glide.load.engine.GlideException: Failed to load resource
Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{StringUri->Object->Drawable}, LOCAL, DataCacheKey{sourceKey=https://s3.amazonaws.com/koya-dev-videos/kindness/8da807aa-1e1e-413d-bf9b-5bb084646593/medialibrary/9456621508/videos/1eb78337-d569-41bd-95ad-153d9098de03.png, signature=EmptySignature}
Cause (1 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{StringUri->Drawable->Drawable}
Cause (2 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{StringUri->Bitmap->Drawable}
Une autre raison pour laquelle ce problème apparaît est que le téléphone/l'émulateur n'a pas de connexion Internet.
Suis également confronté à ce problème.Son bug du côté glide.Use la dernière version de glide.
repositories {
mavenCentral()
google()
}
dependencies {
implementation 'com.github.bumptech.glide:glide:4.9.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
}
Assurez-vous que itemData.getThumbnailUri () ne contient pas d'espace vide
Essayez ceci
String url = "https://s3.amazonaws.com/koya-dev-videos/kindness/8da807aa-1e1e-413d-bf9b-5bb084646593/medialibrary/9456621508/videos/1eb78337-d569-41bd-95ad-153d9098de03.png";
GlideApp.with(context).load(url)
.override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
.error(R.drawable.glide_app_img_loader)
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
return false;
}
}).into(imageView);
J'ai trouvé que Glide
ne peut pas charger HTTP
urls mais fonctionne très bien si nous utilisons HTTPS
sur HTTP
.
De plus, il ne parvient pas à charger de grandes images comme si l'image est 1800x1800 ou plus, il ne parvient pas à charger autant de données d'image. La meilleure option est donc d'utiliser RequestOptions#override()
et de l'appliquer à Glide
, dans ce cas.
try {
String url = "" /* URL of Image */;
if (url.startsWith("http://"))
url = url.replace("http://", "https://");
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.mipmap.app_icon);
requestOptions.error(R.mipmap.app_icon);
Glide
.with(context)
.setDefaultRequestOptions(requestOptions)
.load(url)
.into(imgView);
} catch (Exception e) {
e.printStackTrace();
}
La solution fonctionne pour moi:
1. Mettre à jour build.gradle (Module: app)
implementation "com.github.bumptech.glide:glide:4.7.1"
kapt "com.github.bumptech.glide:compiler:4.7.1"
implementation "com.squareup.okhttp3:okhttp:3.14.0"
implementation ('com.github.bumptech.glide:okhttp3-integration:4.7.1'){
exclude group: 'glide-parent'
}
Définir le délai d'expiration pour la glisse
@GlideModule
class MyAppGlideModule : AppGlideModule() {
override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
val client = OkHttpClient.Builder()
.readTimeout(30, TimeUnit.SECONDS)
.connectTimeout(30, TimeUnit.SECONDS)
.build()
val factory = OkHttpUrlLoader.Factory(client)
glide.registry.replace(GlideUrl::class.Java, InputStream::class.Java, factory)
}
}
Même chose avec les réponses @ievgen.
/
barre obliqueMon projet recevait une API de TMDB et utilisait val BASE_IMAGE = http://image.tmdb.org/t/p/w780/
remarquez le dernier suivi w780/
"barre oblique"?
Il est concaténé par erreur, par exemple:
W/Glide: Load failed for http://image.tmdb.org/t/p/w780//qJdfO3ahgAMf2rcmhoqngjBBZW1.jpg with size [-2147483648x-2147483648]
Suppression de la fin /
slash a résolu mon problème. Par exemple de:
http://image.tmdb.org/t/p/w780/ -> http://image.tmdb.org/t/p/w780
Voici ma configuration:
Glide: 4.9.0
Android Studio: 3.4.1 (Grale Build Tools)