Android Flipping Bitmap с использованием Matrix вызывает OutOfMemoryError - PullRequest
0 голосов
/ 25 сентября 2011

У меня такая проблема как в эмуляторе, так и на телефонах Android с экранами высокого разрешения:

09-24 21:59:01.772: ERROR/AndroidRuntime(341): FATAL EXCEPTION: Thread-8
09-24 21:59:01.772: ERROR/AndroidRuntime(341): java.lang.OutOfMemoryError: bitmap size exceeds VM budget

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

Но на телефонах и эмуляторах AVD, которые имеют большие дисплеи, чем мой скромный телефон, выдает ошибку.

Вот метод:

private Bitmap Flip(Bitmap asset) {

    Matrix mat = new Matrix();
        mat.postScale(-1F, 1F); 
        int width = asset.getWidth();
        int height = asset.getHeight();

        return Bitmap.createBitmap(asset, 0, 0, width, height, mat, true);

}

Кажется, что такое базовое преобразование, почему оно не сможет перевернуть растровое изображение? это всего 2кб.

Может кто-нибудь предложить альтернативный подход к получению перевернутой версии растрового изображения?

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