webentwicklung-frage-antwort-db.com.de

Holen Sie sich Bitmap von ImageView in Android L

Ich möchte Bitmap von ImageView. Ich habe folgenden Code verwendet, aber getDrawable() gibt null zurück. So erhalten Sie Bitmap von ImageView.

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");
28

Versuche dies:

imageView.invalidate();
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
48
Pankaj Arora

Wenn Sie nur die Bitmap aus einer ImageView möchten, funktioniert der folgende Code möglicherweise für Sie:

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

Versuchen Sie, das Bild in allen Ordnern mit Zeichenqualitäten (drawable-hdpi/drawable-ldpi usw.) zu speichern.

Möglicherweise hat der Emulator oder das Gerät, das Sie verwenden, eine andere Dichte und versucht, Bilder aus einem anderen Ordner abzurufen.

Wenn Sie in Ihrem Bild eine andere Erweiterung als .png, .jpg oder .gif verwenden, werden andere Erweiterungstypen möglicherweise nicht erkannt. http://developer.Android.com/guide/topics/resources/drawable-resource.html

21
droidev

Laut dieser Antwort mach es einfach so:

imageView.buildDrawingCache();
Bitmap bmap = imageView.getDrawingCache();
18
ToYonos

Wenn Sie versuchen, eine Bitmap von einem mit Glide geladenen Bild zu erhalten, wird dies Ihnen helfen

 Drawable dr = ((ImageView) imView).getDrawable();
        Bitmap bmp =  ((GlideBitmapDrawable)dr.getCurrent()).getBitmap();
4
Ness Tyagi

Machen Sie ein Bild von ImagView und konvertieren Sie es in einen String, der an den Server gesendet werden soll

    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
younes