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

Android: как конвертировать весь ImageView в Bitmap?

У меня есть приложение, которое отображает изображения с различным соотношением, измененные внутри (в центре) imageView. Мне нужно создать растровое изображение из ImageView, включая фон (черный в этом случае).

Так, например, у меня есть экран устройства 320x480, полноэкранный imageView с размером изображения до 280x480. Как я могу получить растровое изображение 320x480?

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

4b9b3361

Ответ 1

Вы можете просто использовать кеш изображения imageView. Он отобразит весь вид, как он выложен (масштабированный, граничит с фоном и т.д.) С новым растровым изображением.

просто убедитесь, что он создан.

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

там ваш растровый рисунок, как это видел на экране.

Ответ 2

Вы пробовали:

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

Ответ 3

Просто размышляя здесь (с по общему признанию, небольшой опыт работы с графикой на Java), возможно, что-то вроде этого будет работать?:

ImageView iv = (ImageView)findViewById(R.id.imageview);
Bitmap bitmap = Bitmap.createBitmap(iv.getWidth(), iv.getHeight(), Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
iv.draw(canvas);

Из любопытства, чего вы пытаетесь достичь? Может быть лучший способ достичь своей цели, чем то, что вы имеете в виду.

Ответ 4

try {
        photo.setImageURI(Uri.parse("Location");
        BitmapDrawable drawable = (BitmapDrawable) photo.getDrawable();
        Bitmap bitmap = drawable.getBitmap();
        bitmap = Bitmap.createScaledBitmap(bitmap, 70, 70, true);
        photo.setImageBitmap(bitmap);

    } catch (Exception e) {

    }

Ответ 5

Это рабочий код

imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(imageView.getDrawingCache());

Ответ 6

Это работает в Kotlin после того, как buildDrawingCache() устарела

 // convert imageView to bitmap
val bitmap = (imageViewId.getDrawable() as BitmapDrawable).getBitmap()