Я рисую наложение на изображение с камеры и сохраняю результат в файл. Для этого я передаю обратный вызов, содержащий приведенный ниже код, в takePicture (). При больших размерах изображения я получаю сбои с OutOfMemoryError в первой строке метода.
Есть ли способ, которым я могу сделать это более эффективно? Кажется, что невозможно сделать изменяемый битовый образ из байта [], который сразу удваивает мое использование памяти. Если это невозможно сделать с высоким разрешением, как может создать оверлей на большом захваченном изображении без исчерпания памяти?
public void onPictureTaken(byte[] rawPlainImage, Camera camera) {
Bitmap plainImage = BitmapFactory.decodeByteArray(rawPlainImage, 0, rawPlainImage.length);
plainImage = plainImage.copy(plainImage.getConfig(), true);
Canvas combinedImage = new Canvas(plainImage);
combinedImage.drawBitmap(mOverlay, mOverlayTransformation, null);
//Write plainImage (now modified) out to a file
plainImage.recycle();
}