web-dev-qa-db-ja.com

Android LのImageViewからビットマップを取得

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

これを試して:

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

ImageViewからビットマップが必要な場合は、次のコードが有効です。

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

すべての描画可能品質フォルダー(drawable-hdpi/drawable-ldpiなど)に画像を入れてみてください

使用しているエミュレータまたはデバイスの密度が異なり、別のフォルダから画像を取得しようとしている可能性があります。

画像で.png、.jpg、または.gif以外の拡張子を使用している場合、他の拡張子タイプを認識しない場合があります。 http://developer.Android.com/guide/topics/resources/drawable-resource.html

21
droidev

この回答 によると、次のように実行します。

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

Glideでロードされた画像からビットマップを取得しようとしている場合、これはあなたを助けます

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

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;
}
0
younes