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.更多详情就参考官方文档
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中Core Motion框架的介绍和使用
- iOS4中Core Motion框架的介绍和使用
- Android 开源框架Universal-Image-Loader解析 基本介绍及使用
- .Net Core 2.0生态(4):Entity Framework Core 2.0 特性介绍和使用指南
- SDWebImage的使用以及原理介绍
- iOS CoreData介绍和使用(以及一些注意事项)
- iPhone获取当前位置(CoreLocation的一些简单使用)
- (android控件)ImageSwitcher介绍和使用说明
- ios数据持久化--CoreData框架的介绍和使用
- IOS--CoreData使用介绍
- js预载入和JavaScript Image()对象使用介绍
- GPUImage 的部分使用和介绍
- iphone 使用Core Graphics 合成图片
- 【Facebook的UI开发框架React入门之八】Image的使用简单介绍(iOS平台)-goodmao
- iOS开发之滤镜的使用技巧(CoreImage)
- universal-image-loader的使用及介绍
- iOS框架介绍之coreImage
- 【学习使用】Image Tips 插件介绍
- Core Animation基础介绍、简单使用CALayer以及多种动画效果