Bitmap
からImageView
を取得したい。次のコードを使用しましたが、getDrawable()
はnullを返します。 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");
これを試して:
imageView.invalidate(); BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable(); Bitmap bitmap = drawable.getBitmap();
ImageViewからビットマップが必要な場合は、次のコードが有効です。
Bitmap bm=((BitmapDrawable)imageView.getDrawable()).getBitmap();
すべての描画可能品質フォルダー(drawable-hdpi/drawable-ldpiなど)に画像を入れてみてください
使用しているエミュレータまたはデバイスの密度が異なり、別のフォルダから画像を取得しようとしている可能性があります。
画像で.png、.jpg、または.gif以外の拡張子を使用している場合、他の拡張子タイプを認識しない場合があります。 http://developer.Android.com/guide/topics/resources/drawable-resource.html
この回答 によると、次のように実行します。
imageView.buildDrawingCache();
Bitmap bmap = imageView.getDrawingCache();
Glideでロードされた画像からビットマップを取得しようとしている場合、これはあなたを助けます
Drawable dr = ((ImageView) imView).getDrawable();
Bitmap bmp = ((GlideBitmapDrawable)dr.getCurrent()).getBitmap();
ImageViewの写真を撮り、それを文字列に変換してサーバーに送信します
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;
}