Je souhaite obtenir une Bitmap
d'une ImageView
chargée avec Glide
comme ceci:
Glide.with(getContext()).load(URL)
.thumbnail(0.5f)
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(my_imageView);
J'ai essayé ce qui suit:
imageView.buildDrawingCache();
Bitmap bmap = imageView.getDrawingCache();
et
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
Et aucun d'entre eux n'a fonctionné pour moi jusqu'à présent.
Comment cela peut il etre accompli?
Oh, c'est une simple erreur. Vous devez ajouter ceci avant le code où vous essayez d'extraire Bitmap de ImageView:
imageView.setDrawingCacheEnabled(true);
Pour extraire la Bitmap
de ImageView à l'aide de DrawingCache, vous devez d'abord enable
ImageView pour dessiner le cache d'images.
puis:
Bitmap bmap = imageView.getDrawingCache();
De plus, appeler buildDrawingCache();
équivaut à appeler buildDrawingCache(false);
.
J'ai eu le problème que le bitmap aboutissait toujours à null (même en utilisant le cache de dessin, probablement une course avec Facebook ShareButton/ShareContent), donc j'avais la solution suivante pour m'assurer que le glissement était terminé en chargeant l'image:
Ajouter un auditeur à glisser
Glide.with(this)
.load(url)
.listener(listener)
.into(imageView);
L'auditeur
private RequestListener listener = new RequestListener() {
...
@Override
public boolean onResourceReady(Object resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) {
Bitmap bitmap = ((BitmapDrawable) resource).getBitmap();
return false;
}
};
setDrawingCacheEnabled
a été - obsolète , une autre solution utilise donc
ImageView imageView = findViewById(R.id.image);
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
Ou pour obtenir Bitmap
à partir de Uri
, nous pouvons utiliser la bibliothèque Glide.
Bitmap bitmap = Glide.with(this) //taking as bitmap
.load(uri //Uri)
.asBitmap()
.into(100, 100) //width and height
.get();
Utiliser Glide est très utile pour manipuler bitmaps
. Reportez-vous à la documentation à Gestion des images bitmap