OutOfMemoryError: поворот большого растрового изображения Android (90 °) - PullRequest
4 голосов
/ 21 ноября 2011

У меня большая проблема с памятью:

// in sourceImage is a big JPEG previously loaded
Matrix mat = new Matrix();
mat.postRotate(90);
Bitmap rotatedImage = Bitmap.createBitmap(sourceImage, 0, 0, sourceImage.getWidth(), sourceImage.getHeight(), mat, true);

Всегда я запускаю этот код, мое приложение вылетает и говорит: «ВМ не позволяет нам выделять байты xxxxxx»

Вы можете мне помочь?

Edit:

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011

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

Но вы можете отобразить повернутое растровое изображение без создания нового растрового изображения (применить преобразование).ImageView не имеет возможности поворота, поэтому вы должны написать свою собственную расширенную версию ImageView (RotatedImageView?).

Идея состоит в том, чтобы переопределить метод onDraw чем-то вроде этого (не проверено).1008 *

1 голос
/ 15 апреля 2013

Для других, как я:

есть опция, чтобы камера выполняла вращение, https://stackoverflow.com/a/16010289/755804

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