Iphone 我可以在objective C中处理UIImage吗?

Iphone 我可以在objective C中处理UIImage吗?,iphone,objective-c,image-processing,uiimage,Iphone,Objective C,Image Processing,Uiimage,我想一点一点地处理UIImage。根据所附示例,第一个是普通图像,第二个是使用CGBitmapContextCreate函数处理的图像 有什么想法或参考资料吗 我不知道通过什么可以实现,但不确定我们如何一点一点地处理 CGContextRef context; context = CGBitmapContextCreate(pixelData, CGImageGetWidth(sourceImage),

我想一点一点地处理UIImage。根据所附示例,第一个是普通图像,第二个是使用CGBitmapContextCreate函数处理的图像

有什么想法或参考资料吗

我不知道通过什么可以实现,但不确定我们如何一点一点地处理

CGContextRef context;
context = CGBitmapContextCreate(pixelData,
                                CGImageGetWidth(sourceImage),
                                CGImageGetHeight(sourceImage),
                                8,
                                CGImageGetBytesPerRow(sourceImage),
                                CGImageGetColorSpace(sourceImage),
                                kCGImageAlphaPremultipliedLast);

如果要处理图像,可以使用不同的技术:

  • 检查核心图像以查看内置的过滤器以及如何将其应用于图像。请注意,Mac OS上也提供核心映像,您可以构建自定义筛选器

  • 对于更多与“图像处理”或“计算机视觉”相关的任务(我在这里谈论的是技术领域,而不是拉皮条的图像),您需要访问图像的位图数据。为此,您可以从UIImage创建CGImage(请参阅Quartz文档),或者如果您从网络摄像头抓取图像,则需要使用中间缓冲区(请参阅AVFoundation frmework)


我为UIImage创建了一个基本的图像编辑器类别,您可以从中对任何图像进行编辑和转换。请看这里:Quartz core比OpenGL慢。如果你想要快速的图像处理,那么你应该选择OpenGL。不是真的:Quartz也依赖OpenGL后端。Quartz是用于绘图的框架,因此包括创建/获取位图,因此,如果不使用此框架,您无法获取图像数据。但是,当我制作了一个用于将图像转换为绘图的应用程序时,我使用iphone的applied processor使用quartzcore制作了一幅1000x1000 pxl图像,耗时3分钟。同样,借助OpenGL只需1秒钟。OpenGL ES确实比使用CPU限制的处理快得多。Quartz在iOS上不使用OpenGL ES进行光栅化,对于这样的操作,您通常会使用基于CPU的操作来迭代像素。根据我的经验,与使用OpenGL ES的基于着色器的实现相比,它的运行速度可以慢2-180倍。此外,短语“您可以构建自定义过滤器”不适用于iOS上的核心映像。