Obtenir Bitmap à partir D'ImageView sur Android L

je veux obtenir BitmapImageView. J'ai utilisé le code suivant, mais getDrawable() renvoie la valeur null. Comment obtenir entier BitmapImageView.

Bitmap bitmap;
if (mImageViewer.getDrawable() instanceof BitmapDrawable) {
    bitmap = ((BitmapDrawable) mImageViewer.getDrawable()).getBitmap();
} else {
    Drawable d = mImageViewer.getDrawable();
    bitmap = Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    d.draw(canvas);
}
storeImage(bitmap,"final.jpeg");
23
demandé sur Bugs Happen 2014-11-11 16:14:10

5 réponses

essaye ceci:

imageView.invalidate();
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
40
répondu Pankaj Arora 2018-08-02 09:30:38

si vous voulez juste le Bitmap d'une ImageView le code suivant peut fonctionner pour vous: -

Bitmap bm=((BitmapDrawable)imageView.getDrawable()).getBitmap();

essayez d'avoir l'image dans tous les dossiers de qualités (drawable-hdpi/drawable-ldpi etc.)

pourrait être que l'émulateur ou l'appareil que vous utilisez a une densité différente et essaye de tirer des images d'un autre dossier.

Si vous utilisez une extension de votre image autre que .png,.jpg, ou .gif, il pourrait ne pas reconnaître d'autres types d'extension. http://developer.android.com/guide/topics/resources/drawable-resource.html

18
répondu droidev 2014-11-20 01:56:16

Selon cette réponse, il suffit de faire comme ceci:

imageView.buildDrawingCache();
Bitmap bmap = imageView.getDrawingCache();
18
répondu ToYonos 2017-05-23 12:34:39

si vous essayez d'obtenir bitmap à partir de Glide loaded image, alors cela vous aidera

 Drawable dr = ((ImageView) imView).getDrawable();
        Bitmap bmp =  ((GlideBitmapDrawable)dr.getCurrent()).getBitmap();
4
répondu Ness Tyagi 2016-09-06 13:04:38

prenez une photo de L'ImagView et convertissez-la en chaîne pour envoyer au serveur

    ImageView   ivImage1 = (ImageView ) findViewById(R.id.img_add1_send );


                    getStringImage( ( ( BitmapDrawable ) ivImage1.getDrawable( ) ).getBitmap( ) ),



public String getStringImage(Bitmap bm){
    ByteArrayOutputStream ba=new ByteArrayOutputStream(  );
    bm.compress( Bitmap.CompressFormat.PNG,90,ba );
    byte[] by=ba.toByteArray();
    String encod= Base64.encodeToString( by,Base64.DEFAULT );
    return encod;
}
0
répondu younes 2017-08-22 17:30:44