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

Загрузка ресурса в изменяемое растровое изображение

Я загружаю растровое изображение из такого ресурса:

 Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image);

То, что я хочу сделать, это внести некоторые изменения в растровое изображение до того, как оно будет привлечено к основному холсту в моем методе рисования (поскольку казалось бы расточительным повторить много рисунка в моем основном цикле, когда он не изменится). Я вношу изменения в растровое изображение со следующим:

Canvas c = new Canvas(mBackground);
c.drawARGB(...); // etc

Итак, я получаю исключение

java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor

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

Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image).copy(Bitmap.Config.ARGB_8888, true);

Что бы избежать проблемы, но иногда вызывает OutOfMemoryExceptions, знаете ли какие-либо лучшие способы достижения того, что я хочу?

4b9b3361

Ответ 3

Лучше использовать RapidDecoder.

import rapid.decoder.BitmapDecoder;

Bitmap mBackground = BitmapDecoder.from(res, R.drawable.image)
        .mutable().decode();

Работает для уровня API 8.

Ответ 4

если вам нужно обрабатывать все уровни API, проверьте это сообщение:

fooobar.com/info/78314/...