Модификация растрового изображения из ресурсов - PullRequest
0 голосов
/ 06 декабря 2011

Я пытаюсь сделать некоторые дополнения к содержанию моего ImageView, которое представлено Drawable из ресурсов.Я знаю, что все Drawable из ресурсов являются неизменяемыми по умолчанию, но даже после того, как я вызываю mutable() метод и получаю Bitmap из этого Drawable, чтобы передать его Canvas объекту, я получаю java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor.Вот код:

Drawable homeImage = mHomeImage.getBackground(); // my ImageView
homeImage.mutate();
Canvas c = new Canvas(((BitmapDrawable)homeImage).getBitmap());

Есть ли способ изменить Bitmap без создания его копии?

1 Ответ

1 голос
/ 06 декабря 2011

Попробуйте это

Bitmap bmp1 = (((BitmapDrawable)homeImage).getBitmap())
        .copy(Config.ARGB_8888, true);
Canvas c = new Canvas(bmp1);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...