我目前正在开发一款iphone应用程序,让用户可以使用相机拍照,然后使用Quartz 2D进行处理。
使用Quartz 2D,我会对上下文进行变换,使图像以正确的方向显示(缩放和平移,因为它是镜像的),然后我将一堆图层叠加在一起,以混合模式处理图片。
初始(和最终结果)图片是3mp或5mp,具体取决于设备,一旦绘制就会占用大量内存。 提醒:它不是内存中的jpeg,它是位图数据。
我的图层与初始图片的大小相同,所以每当我在图片上方绘制一个新图层时,我需要内存中的当前图片状态(A)+混合内存空间的图层(B)+空间在内存中写入结果(C)。
当我得到结果时,我会抛弃“A”和“B”,将“C”带到下一个处理阶段,它将成为新的“A”......
我需要4张这样的传球来获得压轴图片。
为了解决这些图片,我的内存使用率可能会攀升。 我可以看一眼14Mo-15Mo,大部分时间我只收到1级警告,但2级有时会向我挥手并杀死我的应用程序。
答案 0 :(得分:0)
因为持续时间长约两倍;我说它的处理量是原来的两倍。第三张照片拍的时间是三倍吗?
如果是这样,那似乎表明它正在处理以前拍摄的所有照片/图层。当然 - 这是代码中的错误。