我正在编写一个图像处理应用程序(例如操作包括模糊,旋转,缩放,合并,填充洪水),我担心内存使用。
我遇到的问题是我需要使用Bitmap + Canvas以便我可以利用现有的功能来处理图像,我还需要将图像的副本放在int数组中以修改像素对于某些操作(如模糊和泛光填充),使用set / getPixel函数修改位图的速度太慢。
我目前的内存使用情况是:
例如,我使用两个int数组来执行泛光填充操作:我将主图像复制到一个数组,将主图像的灰度版本放在另一个数组中(使用屏幕外创建灰度表示)首先使用Bitamp和Canvas),在进行颜色比较时使用灰度图像在第一个数组中执行泛光填充操作,然后将最终图像复制回主图像Bitmap。我也许可以消除此操作的屏幕外位图,但是例如我使用屏幕外位图来执行绘画操作。
我是否可以使用任何技巧来减少内存使用量?例如,是否有任何快速方法来修改不涉及制作Bitmap对象的int数组副本的像素?我可以使用Canvas对象直接修改int数组吗?
我想添加图层功能(即主图像将由几个位图组成)但我的内存已经缩短了。
答案 0 :(得分:0)
根据您使用两个int数组的内容,您可以考虑将它们作为字节数组。同样,根据您的使用情况,您可以使用二进制掩码在每个字节中存储多个位标志。并且,根据您希望边界检测的工作方式,您可以减少用于填充填充操作的图像上的每像素位数。 HTH