无法从iPhone相机后期制作图像?

时间:2009-09-30 07:31:22

标签: iphone iphone-sdk-3.0 quartz-graphics

在iPhone 3GS上,相机拍摄的图像为2048x1536像素。如果我的数学是正确的,在CGLayer上打开此图像将消耗12.5 MB。

Springboard将终止任何超过12 MB的应用程序(至少这是我遇到的情况)。

使用像CGContextDrawLayer这样的函数操作此图像将至少消耗12 mb。

这是24 MB。

如何在没有程序终止的情况下在iPhone上操作此类图像?

有没有办法减少相机拍摄的图像的占地面积而不减小尺寸?

任何线索?感谢。

2 个答案:

答案 0 :(得分:2)

您应该考虑使用NSInputStream来处理您的图像,无论大小有多大。例如,您可能会读取1 MB的数据,处理它,将结果写入NSOutputStream,然后重复11次直到EOF。

更有可能的是,您的图像处理算法将确定最佳块大小。

答案 1 :(得分:1)

您的屏幕只有320 x 480像素,因此在图层上放置更多内容似乎是浪费内存。

因此,您可以将原始图像从原始图像转换为2048 x 1526像素,然后再缩放到320 x 480像素,然后再将其放到图层上。

例如,如果使用UIScrollView来显示图层,则可以编写代码,以便捏合和拉伸将根据当前缩放级别计算新的320 x 480像素表示,并根据框架和视角的界限。在您的代码中,点击并拖动将转换原点并重新计算缺失的位。

当您放大文档时,可以使用Safari查看此效果。在渲染新视图时,它从模糊变为锐利。同样,在拖动视图时,会计算其新丢失的部分并将其添加到视图中。

无论触摸事件如何,您可能只想在图层上放置一个320 x 480像素的表示。