Assurez-vous que vous êtes sur la dernière version
implementation 'com.github.bumptech.glide:glide:4.10.0'
Kotlin:
Glide.with(this)
.asBitmap()
.load(imagePath)
.into(object : CustomTarget<Bitmap>(){
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
imageView.setImageBitmap(resource)
}
override fun onLoadCleared(placeholder: Drawable?) {
// this is called when imageView is cleared on lifecycle call or for
// some other reason.
// if you are referencing the bitmap somewhere else too other than this imageView
// clear it here as you can no longer have the bitmap
}
})
Taille du bitmap:
si vous souhaitez utiliser la taille d'origine de l'image utilisez le constructeur par défaut comme ci-dessus, sinon Vous pouvez passer la taille souhaitée pour le bitmap
into(object : CustomTarget<Bitmap>(1980, 1080)
Java:
Glide.with(this)
.asBitmap()
.load(path)
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
Ancienne réponse:
Avec compile 'com.github.bumptech.glide:glide:4.8.0'
et ci-dessous
Glide.with(this)
.asBitmap()
.load(path)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
}
});
Pour compile 'com.github.bumptech.glide:glide:3.7.0'
et ci-dessous
Glide.with(this)
.load(path)
.asBitmap()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
imageView.setImageBitmap(resource);
}
});
Maintenant, vous pourriez voir un avertissement SimpleTarget is deprecated
Raison:
Le point principal de la désapprobation de SimpleTarget est de vous avertir de la manière dont il vous tente de rompre le contrat d'API de Glide. Plus précisément, il ne fait rien pour vous forcer à cesser d'utiliser les ressources que vous avez chargées une fois que SimpleTarget est effacé, ce qui peut entraîner des plantages et une corruption graphique.
La SimpleTarget
photo peut être utilisée tant que vous vous assurez de ne pas utiliser le bitmap une fois que l'imageView est effacée.
4.9.0
.asBitmap()
devrait être mis aprèswith(this)
s'il n'est pas résolu.Je ne connais pas assez Glide, mais il semble que si vous connaissez la taille cible, vous pouvez utiliser quelque chose comme ceci:
Il semble que vous puissiez réussir
-1,-1
et obtenir une image en taille réelle (uniquement basée sur des tests, vous ne pouvez pas la voir documentée).Remarque
into(int,int)
renvoie aFutureTarget<Bitmap>
, vous devez donc envelopper ceci dans un bloc try-catch couvrantExecutionException
etInterruptedException
. Voici un exemple d'implémentation plus complet, testé et fonctionnel:Suite à la suggestion de Monkeyless dans le commentaire ci-dessous (et cela semble être la méthode officielle aussi ), vous pouvez utiliser un
SimpleTarget
, éventuellement associé àoverride(int,int)
pour simplifier considérablement le code. Cependant, dans ce cas, la taille exacte doit être fournie (tout ce qui est inférieur à 1 n'est pas accepté):comme suggéré par @hennry si vous avez besoin de la même image, utilisez
new SimpleTarget<Bitmap>()
la source
Target.SIZE_ORIGINAL
à la fois pour la largeur et la hauteur du bitmap au lieu de -1SimpleTarget
ce type:new SimpleTarget<Bitmap>(){....}
Il semble que remplacer la
Target
classe ou l'une des implémentations commeBitmapImageViewTarget
et remplacer lasetResource
méthode pour capturer le bitmap pourrait être la voie à suivre ...Ceci n'a pas été testé. :-)
la source
METTRE À JOUR
Maintenant, nous devons utiliser
Custom Targets
CODE D'ÉCHANTILLON
La réponse ci-dessus est correcte mais obsolète
car dans la nouvelle version de Glide
implementation 'com.github.bumptech.glide:glide:4.8.0'
Vous trouverez ci-dessous une erreur dans le code
.asBitmap()
n'est pas disponible dansglide:4.8.0
est obsolèteSimpleTarget<Bitmap>
Voici la solution
la source
C'est ce qui a fonctionné pour moi: https://github.com/bumptech/glide/wiki/Custom-targets#overriding-default-behavior
la source
Si vous souhaitez affecter une image bitmap dynamique à des variables bitmap
Exemple pour
kotlin
Les réponses ci-dessus n'ont pas fonctionné pour moi
.asBitmap
devrait être avant le.load("http://....")
la source
MISE À JOUR POUR UNE NOUVELLE VERSION
ANCIENNE RÉPONSE
La réponse de @ outlyer est correcte, mais il y a quelques changements dans la nouvelle version de Glide
Ma version: 4.7.1
Code:
Remarque: ce code s'exécute dans UI Thread, vous pouvez donc utiliser AsyncTask, Executor ou autre chose pour la concurrence (comme le code de @ outlyer) Si vous voulez obtenir la taille d'origine, mettez Target.SIZE_ORIGINA comme code. N'utilisez pas -1, -1
la source
Version plus récente:
la source