我最近发现,相比在Java侧只能分配有限内存(大多数设备上为约25Mb),NDK代码可以分配无限量的内存。我想编写一个图像处理应用程序(类似于Photoshop),需要同时保持几个大型位图在内存中,其中位图数据将占用约20Mb的内存。在Java中进行此操作可能会导致许多设备出现内存不足异常。
所有我当前的代码都使用Bitmap和Canvas类来进行图像操作。有没有人能建议一种方法,允许我在C端分配大部分内存,并仍然使用Bitmap+Canvas执行我的绘图操作(使用Android 2.1及以上版本)?
例如,如果我的图像由6个位图层组成,用户正在第3层上绘画,我需要在第3层上绘制一个画布位图,然后实时更新屏幕以显示所有层的压缩结果。我考虑了一些方案,例如在C中将我的6个位图分配为int数组,并在Java中使用Canvas进行绘画操作,使用存储在Bitmap对象中的正在编辑的图层的副本。但我不确定压缩阶段如何工作。
所有我当前的代码都使用Bitmap和Canvas类来进行图像操作。有没有人能建议一种方法,允许我在C端分配大部分内存,并仍然使用Bitmap+Canvas执行我的绘图操作(使用Android 2.1及以上版本)?
例如,如果我的图像由6个位图层组成,用户正在第3层上绘画,我需要在第3层上绘制一个画布位图,然后实时更新屏幕以显示所有层的压缩结果。我考虑了一些方案,例如在C中将我的6个位图分配为int数组,并在Java中使用Canvas进行绘画操作,使用存储在Bitmap对象中的正在编辑的图层的副本。但我不确定压缩阶段如何工作。