недействительными ();

но я обнаружил, что нет жесткого ограничения на объем памяти, который может выделять код NDK, в отличие от сильно ограниченного объема памяти (~ 25 МБ на большинстве устройств), который вы можете выделить на стороне Java.

Я хочу написать приложение для обработки изображений (что-то вроде Photoshop), которое должно хранить сразу несколько больших растровых изображений в памяти, где данные растрового изображения занимают ~ 20 МБ памяти. Выполнение этого в Java делает приложение склонным к нехватке памяти на многих устройствах, которые я пробовал.

Весь мой текущий код использует классы Bitmap и Canvas для манипуляций с изображениями.Может кто-нибудь предложить какой-нибудь способ, который позволит мне выделить большую часть моей памяти на стороне C и при этом использовать Bitmap + Canvas для выполнения операций рисования (с использованием Android 2.1 и выше)?

Например, если мое изображение состоит из 6 растровых слоев, а пользователь рисует на 3-м слое, мне нужно нарисовать растровое изображение капли краски на 3-м слое, а затем обновить экран, чтобы отобразить результат выравнивания всех слоев сверху. друг друга в режиме реального времени. Я рассмотрел что-то вроде выделения 6 моих растровых изображений в C как массивов int и выполнения операции рисования на стороне Java с помощью Canvas, используя копию редактируемого слоя, хранящуюся в объекте Bitmap. Я не уверен, как будет работать стадия выравнивания.

 Jason Rogers26 янв. 2011 г., 05:39
Я никогда не пробовал, но в SDK есть пример кода, который показывает манипулирование растровым изображением с ndk, но я думаю, что это только avalabe для andorid 2.2

Ответы на вопрос(1)

зображение в Java и манипулирует битами в собственном коде. Один из возможных методов заключается в том, что вы можете выделить большие блоки памяти и хранить изображения в собственном коде и просто визуализировать «представление» в битовый массив, созданный Java. Метод визуализации вида и «выравнивания» слоев изображения, вероятно, должен выполняться в собственном коде. Что-то вроде:

... пользователь изменил слой ...

My_native_render_code (MyDisplayBitmap);

недействительными ();

Ваш ответ на вопрос