您的位置:首页 > 其它

IPhone CoreImage 的介绍和使用

2012-08-02 23:34 190 查看
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.更多详情就参考官方文档
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: