Подтвердить что ты не робот

Получить Bitmap из ImageView в Android L

Я хочу получить 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");
4b9b3361

Ответ 1

Попробуйте следующее:

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

Ответ 2

В соответствии с этим ответом просто выполните следующее:

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

Ответ 3

Если вы просто хотите, чтобы Bitmap из ImageView, для вас может работать следующий код: -

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

Попробуйте создать изображение во всех папках с доступными качествами (drawable-hdpi/drawable-ldpi и т.д.)

Возможно, эмулятор или устройство, используемое вами, имеют разную плотность и пытаются вытащить изображения из другой папки.

Если вы используете расширение на своем изображении, отличном от .png,.jpg или .gif, оно может не распознавать другие типы расширений. http://developer.android.com/guide/topics/resources/drawable-resource.html

Ответ 4

Если вы пытаетесь получить растровое изображение из загруженного изображения Glide, то это поможет вам

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

Ответ 5

Сделайте снимок 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;
}