Uso de Bitmap / Canvas e NDK

Descobri recentemente que não há limite rígido para a quantidade de memória que o código NDK pode alocar, em contraste com a quantidade bastante limitada de memória (~ 25Mb na maioria dos dispositivos) que você pode alocar no lado Java.

Quero escrever um aplicativo de processamento de imagem (algo como o Photoshop) que precise manter vários bitmaps grandes na memória de uma só vez, onde os dados do bitmap ocuparão ~ 20Mb de memória. Fazer isso em Java torna o aplicativo propenso a exceções de falta de memória em muitos dispositivos que tentei.

Todo o meu código atual usa a classe Bitmap e Canvas para manipular minhas imagens.Alguém pode sugerir uma maneira que me permita alocar a maior parte da minha memória no lado C e ainda usar o Bitmap + Canvas para executar minhas operações de desenho (usando o Android 2.1 e superior)?

Como exemplo, se minha imagem é composta por 6 camadas de bitmap e o usuário está pintando na 3ª camada, preciso desenhar um bitmap de blob de tinta na 3ª camada e atualizar a tela para mostrar o resultado do nivelamento de todas as camadas na parte superior um do outro em tempo real. Considerei algo como alocar meus 6 bitmaps em C como matrizes int e executar a operação de pintura no lado Java com o Canvas usando uma cópia da camada que está sendo editada armazenada em um objeto Bitmap. Não tenho certeza de como a fase de achatamento vai funcionar.

questionAnswers(1)

yourAnswerToTheQuestion