IPhone CoreImage 的介绍和使用

1.coreImage的简单介绍:        

         Core Image 是IOS5系统推出的处理图片的一个框架。处理图片的效果包括:色彩、曝光、饱和度、变形等。特点是功能强大,可以直接使用GPU,效率高,可以实时地对视频进行渲染。

 

2.CoreImage的使用

         2.1在IOS开发中导入CoreImage.framework 框架,Mac开发中CoreImage包含在QuartzCore.framework框架中。

         2.2 CoreImage使用中3个主要的类

                 CIContext::他与Core Graphics 和 OpenGL context类似,所有Core Image的处理流程都通过他来进行。

                 CIImage:用来存放图片数据,可以通过UIImage,图片文件或者像素数据创建。

                 CIFilter:过滤器。通过不同的过滤器来实现不同种类的图片处理。

         2.3 3个主要类对象的创建方法以及使用。

                CIContext初始化方法:

                          1,,创建基于GPU的CIContext对象

                              context =  [CIContext contextWithoptions:nil];

                           2,创建基于CPU的CIContext对象

                               context = [CIContext contextWithOptions:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:KCIContextUseSoftWareRenderer]];

 

               CIImage的初始化方法:

                          1.通过图片路径创建

                                CIImage *beginImage = [CIImage imageWithContentsOfURL:fileNameAndPath];

                           2 通过UIImage对象创建

                                CIImage *beginImage = [CIImage imageWithCGImage:aImage.CGImage];

 

               CIFilter初始化方法:

                         filter = [CIFilter filterWithName:@"CISepiaToOne"];  //指定使用的过滤器

                         [filter setValue:beginImage forKey:KCIInputImageKey]; //指定需要处理的图片

                         [filter setValue:[NSNumber numberWithFloat:slideValue] forKey:@"inputIntensity"]; //指定过滤器参数

        2.4 处理图片并获取处理结果:

                         CIImage *outputImage = [filter outputImage];

                         CGImageRef cgimg = [context  createCGImage:outputImage  forRect:[outputImage extent]];

                         UIImage *resultImage = [UIImage imageWithCGImage:cgimg];

                         CGImageRelease(cgimg);

 

         3.关于CoreImage使用的补充说明

                 1.CIContext采用基于GPU的对象时,效率要比CPU高很多,但是对象无法跨应用访问。例如:在UIImagePickerController的委托方法中调用CIContext对象进行处理,系统会自动将其将为基于CPU的,速度会慢很多。必须在主类中处理才可。

                 2.可以通过[CIFilter  filterNamesInCategory:KCICategoryBuiltIn]  获取所有过滤器的列表。

                 3. 每个过滤器参数都不一样。可以在官方文档中搜索Core Image Filter Reference 查看。或者通过attributes方法查看过滤器的所有属性。

                 4.更多详情就参考官方文档

 

         

你可能感兴趣的:(IOS,CoreImage)