Всякий раз, когда нам нужно повернуть и изменить размер огромного файла изображения на 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]
Есть ли способ сделать оба шага одновременно в облегченном виде?
Я читал о рендеринге, но не смог найти код, который не принимает уже выделенное растровое изображение.