Obtenir Bitmap à partir D'ImageView sur Android L
je veux obtenir Bitmap
ImageView
. J'ai utilisé le code suivant, mais getDrawable()
renvoie la valeur null. Comment obtenir entier Bitmap
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");
5 réponses
essaye ceci:
imageView.invalidate(); BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable(); Bitmap bitmap = drawable.getBitmap();
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
Selon cette réponse, il suffit de faire comme ceci:
imageView.buildDrawingCache();
Bitmap bmap = imageView.getDrawingCache();
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();
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;
}