java - 取得 - android studio bitmap



Android LのImageViewからビットマップを取得する (4)

ImagViewの写真を撮り、それを文字列に変換してサーバーに送信する

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

私はImageViewからBitmapを取得したい。 次のコードを使用しましたが、 getDrawable()はnullを返します。 ImageViewからBitmap全体を取得する方法。

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

Answer #1

ImageViewのビットマップが必要な場合は、次のコードが役に立ちます:

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

すべての描画可能な品質フォルダ(drawable-hdpi / drawable-ldpiなど)にイメージを置いてみてください。

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

.png、.jpg、または.gif以外の画像内の拡張子を使用している場合は、他の拡張子の種類が認識されないことがあります。 http://developer.android.com/guide/topics/resources/drawable-resource.html


Answer #2

この答えによれば、ちょうどこれを次のようにしてください:

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

Answer #3

これを試して:

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




imageview