Android: как конвертировать весь ImageView в Bitmap?
У меня есть приложение, которое отображает изображения с различным соотношением, измененные внутри (в центре) imageView. Мне нужно создать растровое изображение из ImageView, включая фон (черный в этом случае).
Так, например, у меня есть экран устройства 320x480, полноэкранный imageView с размером изображения до 280x480. Как я могу получить растровое изображение 320x480?
В дополнение к этому представлению изображений у меня есть несколько логотипов или кнопок, которые я не хочу включать в растровое изображение, они похожи на верхний слой. Все, что мне нужно, это растровое изображение с изображением и черной рамкой с некоторых сторон.
Ответы
Ответ 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()