iOS5新特性: Core Image 示例
2016-04-22 18:17
369 查看
iOS5给我们带来了很多很好很强大的功能和API。Core Image就是其中之一,它使我们很容易就能处理图片的各种效果,色彩啊,曝光啊,饱和度啊,变形啊神马的。
可惜苹果一直没能完善官方文档,也没有推出示例代码,所以国内很多同学可能还没有开始使用。但国外的大神们已经证明这是个相当强悍的框架,不仅功能强大,而且可以直接使用GPU,效率奇高,甚至可以实时的对视频进行渲染。
下面让我们来看看,如何具体使用它:
首先你需要导入 CoreImage.framework 框架;进行Mac(不是iOS)开发的同学请导入 QuartzCore.framework 框架,包含在其中了。
然后我们先来看看3个主要的类:
CIContext:它与Core Graphics 和 OpenGL context类似,所有Core Image的处理流程都通过它来进行;
CIImage:它用来存放图片数据,可以通过UIImage,图片文件或像素数据创建;
CIFilter:通过它来定义过滤器的详细属性。
CIContext有两种初始化方法,分别对应GPU和CPU
?
比如你打开UIImagePickerController要选张照片进行美化,如果你直接在UIImagePickerControllerDelegate的委托方法里调用CIContext对象进行处理,那么系统会自动将其降为基于CPU的,速度会变慢,所以正确的方法应该是在委托方法里先把照片保存下来,回到主类里再来处理。(代码里你将会看到)
CIImage的初始化方法有很多,常用的也是2种:
?
?
第二行:指定需要处理的图片
第三行:指定过滤参数,每个过滤器的参数都不一样,可以在官方文档里搜索“Core Image Filter Reference”查看
得到过滤后的图片并输出:
?
第二行:通过CIContext的方法createCGImage: fromRect:得到CGImage
第三行:转化为UIImage,这样我们就可以跟据需要显示在界面上了
至此一个过滤周期就完成了,简单来说分以下几个步骤:
1 初始化CIContext,CIImage
2 初始化CIFilter并设置参数
3 得到输出的图片
4 将图片转化成能显示的UIImage类型
如果想一张图片有多种过滤效果就需要重复2,3两步,并且要将上一个过滤器输出的图片作为下一个过滤器的参数
简单吧!几行代码就可以得到丰富的效果哦,我在代码里实现了3种效果:
原图:
旧照片:
色彩:
旋转:
示例代码:
CoreImage.zip (868 K) 下载次数:1297
小技巧:有同学可能想换张图片试试,但使用模拟器的同学打开图片库时里面是空的吧,你在模拟器里打开Safari,在网上找到你想要的图片,长按会弹出问你要不要保存,选保存后再打开图片库里面就有图片了。
相关文章推荐
- iOS- 自定义导航控制器(-)
- iOS textfield属性详解
- iOS,推送通知
- iOS 更改项目名称
- iOS中数据持久化,数据转化问题。
- iOS --KVO
- IOS合并lib(.a)库的终极可用方法(可用于解决duplicate symbol静态库冲突)
- iOS 原生态分享功能的实现
- iOS开发,使用友盟快速分享与第三方的白名单
- iOS 运行时
- IOS中tableviewcell.frame.size返回的是cell在storyboard中的尺寸
- IOS中tableviewcell.frame.size返回的是cell在storyboard中的尺寸
- [iOS] XCode实用快捷键
- iOS到Mac OS之自定义Label
- iOS 应用安全攻防(六):Clutch
- iOS 自定义控件--纯代码或者xib&storyBoard 系统会调用的方法
- iOS自定义键盘
- Nagios 监控系列学习 ―― NRPE 理解
- iOS --Xcode 调试技术
- iOS之一个超赞的视频直播、第三方库,直播看这个就够了,支持RTMP推流,美颜直播