Как получить все растровое изображение, прикрепленное к ImageView? - PullRequest
9 голосов
/ 16 марта 2012

Я пытался привязать растровое изображение к ImageView, используя ImageView.getDrawingCache(); Но я обнаружил, что возвращаемое растровое изображение было не таким, как хотелось бы получить из ImageView. Он всегда был меньше реального изображения.

Я знал, что метод getDrawingCache() не должен иметь вид, если он больше экрана, поскольку видимая часть вида рисуется только, а кэш содержит только то, что нарисовано.

Могу ли я получить все растровое изображение, прикрепленное к ImageView?

Ответы [ 3 ]

26 голосов
/ 16 марта 2012

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

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

Я думаю, это то, что вы хотели.

14 голосов
/ 17 сентября 2013

Если ваше рисование не всегда является экземпляром BitmapDrawable

Примечание: ImageView должен быть установлен до того, как вы сделаете это.

Bitmap bitmap;
if (mImageView.getDrawable() instanceof BitmapDrawable) {
    bitmap = ((BitmapDrawable) mImageView.getDrawable()).getBitmap();
} else {
    Drawable d = mImageView.getDrawable();
    bitmap = Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    d.draw(canvas);
}

Ваше растровое изображение сохраняется в растровом изображении.

Voila!

0 голосов
/ 01 октября 2016

Самый простой способ - установить тег в ImageView.

imageView.setImageBitmap(bitmap);
imageView.setTag(bitmap); 

Чтобы получить тег от него

imageView.getTag();
...