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");
Versuche dies:
imageView.invalidate(); BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable(); Bitmap bitmap = drawable.getBitmap();
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
Laut dieser Antwort mach es einfach so:
imageView.buildDrawingCache();
Bitmap bmap = imageView.getDrawingCache();
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();
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;
}