Эффективное изменение размера и вращение файла изображения (с / без рендеринга) - PullRequest
2 голосов
/ 12 марта 2019

Всякий раз, когда нам нужно повернуть и изменить размер огромного файла изображения на Android (пока не выделено растровое изображение), обычными шагами будет сначала загрузить изображение в растровое изображение с измененным размером, а затем выполнить поворот на другом вновь созданном растровом изображении.

Если я сделаю вращение первым, я, вероятно, закончу страшной ошибкой OutOfMemoryError. Это вполне логично, и я согласен с этим.

Проблема в том, что оба подхода включают в себя наличие двух битовых карт одновременно в памяти в какой-то момент, и у меня ограниченный бюджет памяти, даже после реализации масштабирования битовых карт, как говорят официальные документы (https://developer.android.com/topic/performance/graphics/load-bitmap). Типичный реализация выглядит так:

Bitmap bitmapResized = resizeBitmap(fSource, nTargetWidth, nTargetHeight);
Bitmap bitmapRotated = rotateBitmap(bitmapResized, nOrientation);
[recycle both bitmaps here]

Есть ли способ сделать оба шага одновременно в облегченном виде?

Я читал о рендеринге, но не смог найти код, который не принимает уже выделенное растровое изображение.

...