有没有比Quartz 2D更好/更快的方式来处理相机图像?

时间:2011-03-30 15:44:41

标签: iphone camera quartz-2d

我目前正在开发一款iphone应用程序,让用户可以使用相机拍照,然后使用Quartz 2D进行处理。

使用Quartz 2D,我会对上下文进行变换,使图像以正确的方向显示(缩放和平移,因为它是镜像的),然后我将一堆图层叠加在一起,以混合模式处理图片。

初始(和最终结果)图片是3mp或5mp,具体取决于设备,一旦绘制就会占用大量内存。 提醒:它不是内存中的jpeg,它是位图数据。

我的图层与初始图片的大小相同,所以每当我在图片上方绘制一个新图层时,我需要内存中的当前图片状态(A)+混合内存空间的图层(B)+空间在内存中写入结果(C)。

当我得到结果时,我会抛弃“A”和“B”,将“C”带到下一个处理阶段,它将成为新的“A”......

我需要4张这样的传球来获得压轴图片。

为了解决这些图片,我的内存使用率可能会攀升。 我可以看一眼14Mo-15Mo,大部分时间我只收到1级警告,但2级有时会向我挥手并杀死我的应用程序。

  • 我是否以正确的方式对待一般流程?
  • 有没有办法加快处理速度?
  • 为什么内存警告会随机产生?
  • 为什么第二张图片的处理时间长于第一张图片,如下图所示:

instruments screenshot

1 个答案:

答案 0 :(得分:0)

因为持续时间长约两倍;我说它的处理量是原来的两倍。第三张照片拍的时间是三倍吗?

如果是这样,那似乎表明它正在处理以前拍摄的所有照片/图层。当然 - 这是代码中的错误。