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.更多详情就参考官方文档