Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 位图/画布的使用和NDK_Java_Android_C_Android Ndk - Fatal编程技术网

Java 位图/画布的使用和NDK

Java 位图/画布的使用和NDK,java,android,c,android-ndk,Java,Android,C,Android Ndk,我最近发现,NDK代码可以分配的内存量没有硬性限制,而Java端可以分配的内存量非常有限(在大多数设备上约为25Mb) 我想写一个图像处理应用程序(比如Photoshop),它需要同时在内存中保存几个大位图,其中位图数据将占用约20Mb的内存。在Java中这样做会使应用程序在我尝试过的许多设备上容易出现内存不足异常 我当前的所有代码都使用Bitmap和Canvas类来处理图像有人能建议一些方法,让我在C端分配大部分内存,同时仍然使用位图+画布来执行绘图操作(使用Android 2.1及以上版本)

我最近发现,NDK代码可以分配的内存量没有硬性限制,而Java端可以分配的内存量非常有限(在大多数设备上约为25Mb)

我想写一个图像处理应用程序(比如Photoshop),它需要同时在内存中保存几个大位图,其中位图数据将占用约20Mb的内存。在Java中这样做会使应用程序在我尝试过的许多设备上容易出现内存不足异常

我当前的所有代码都使用Bitmap和Canvas类来处理图像有人能建议一些方法,让我在C端分配大部分内存,同时仍然使用位图+画布来执行绘图操作(使用Android 2.1及以上版本)

例如,如果我的图像由6个位图层组成,并且用户正在第3层上绘制,我需要在第3层上绘制一个paint blob位图,然后更新屏幕以显示实时展平所有层的结果。我已经考虑过将C中的6个位图分配为int数组,并使用存储在位图对象中的正在编辑的层的副本在Java端使用画布执行绘制操作。不过,我不确定展平阶段将如何工作。

查看NDK中的“位图等离子体”样本。它在Java中创建位图,并在本机代码中处理位。一种可能的技术是,您可以分配大块内存,并将图像保存在本机代码中,然后简单地将“视图”渲染到Java创建的位图中。渲染视图和“展平”图像层的方法可能应该在本机代码中完成。大致如下:

…用户更改了图层

我的本地渲染代码(MyDisplayBitmap)


使无效()

我从未尝试过,但sdk中有一个代码示例显示了ndk的位图操作,但我认为这只是针对Andorid2.2的avalabe