一、概述

CoreImage.framework从iOS5开始启用,它使我们很容易就能处理图片的各种效果,色彩,曝光,饱和度,变形等等。不仅功能强大,而且可以直接使用GPU,效率很高,甚至可以实时的对视频进行渲染。
二、使用步骤
1.首先需要导入CoreImage.framework框架;在Mac类库中它集成在了QuartzCore.framework框架。
2.有3个主要的类:
CIContext:它与Core Graphics和OpenGL context类似,所有Core Image的处理流程都通过它来进行;
CIImage:它用来存放图片数据,可以通过UIImage,图片文件或像素数据创建;
CIFilter:通过它来定义过滤器的详细属性。
3.CIContext有两种初始化方法,分别对应GPU和CPU
(1)创建基于GPU的CIContext对象:
   context = [CIContext contextWithOptions: nil];
(2)创建基于CPU的CIContext对象
   context = [CIContext contextWithOptions: [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]
             forKey:kCIContextUseSoftwareRenderer]];
(3)一般采用第一种基于GPU的,因为效率要比CPU高很多,但是要注意的是基于GPU的CIContext对象无法跨应用访问。
比如你打开UIImagePickerController要选张照片进行美化,如果你直接在UIImagePickerControllerDelegate的委托方法里调用CIContext对象进行处理,那么系统会自动将其降为基于CPU的,速度会变慢,所以正确的方法应该是在委托方法里先把照片保存下来,回到主类里再来处理。
4.CIImage的初始化方法有很多,常用的也是2种:
(1)通过图片路径创建CIImage
   NSString *filePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"];
   NSURL *fileNameAndPath = [NSURL fileURLWithPath:filePath];
   beginImage = [CIImage imageWithContentsOfURL:fileNameAndPath];
(2)通过UIImage对象创建CIImage
   UIImage *gotImage = ...;
   beginImage = [CIImage imageWithCGImage:gotImage.CGImage];
5.CIFilter初始化:
   filter = [CIFilter filterWithName:@"CISepiaTone"];
   [filter setValue:beginImage forKey:kCIInputImageKey];
   [filter setValue:[NSNumber numberWithFloat:slideValue] forKey:@"inputIntensity"];
   第一行:指定使用哪一个过滤器,通过[CIFilter filterNamesInCategory: kCICategoryBuiltIn]能得到所有过滤器的列表
   第二行:指定需要处理的图片
   第三行:指定过滤参数,每个过滤器的参数都不一样,可以在官方文档里搜索“Core Image Filter Reference”查看
6.得到过滤后的图片并输出:
   CIImage *outputImage = [filter outputImage];
   CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
   UIImage *newImg = [UIImage imageWithCGImage:cgimg]; 
   [imgV setImage:newImg];
   CGImageRelease(cgimg);
   第一行:通过[filter outputImage]可以得到过滤器输出的图片
   第二行:通过CIContext的方法createCGImage: fromRect:得到CGImage
   第三行:转化为UIImage,这样我们就可以跟据需要显示在界面上了
7.至此一个过滤周期就完成了,简单来说分以下几个步骤:
(1)初始化CIContext,CIImage。
(2)初始化CIFilter并设置参数。
(3)得到输出的图片。
(4)将图片转化成能显示的UIImage类型。
如果想一张图片有多种过滤效果就需要重复2,3两步,并且要将上一个过滤器输出的图片作为下一个过滤器的参数。

CoreImage使用介绍相关推荐

  1. iOS框架介绍之coreImage

    1.coreImage的介绍 coreImage是IOS5中新加入的一个Objective-c的框架,提供了强大高效的图像处理功能,用来对基于像素的图像进行操作与分析.IOS提供了很多强大的滤镜(Fi ...

  2. iOS黑科技之(CoreImage)静态人脸识别(一)

    iOS黑科技之(CoreImage)静态人脸识别(一) 人脸识别原理简介:每一张图片都是由每一个像素点组成,而每一个像素点中又有对应的颜色值(如RGB),人的面部特征中,不同的五官,颜色值肯定存在差异 ...

  3. iOS CoreImage之滤镜简单使用

    代码地址如下: http://www.demodashi.com/demo/11605.html 老骥伏枥,志在千里 前记 最近一直在研究图像处理方面,既上一篇iOS Quart2D绘图之UIImag ...

  4. iOS总体框架介绍和详尽说明

    总体介绍 iOS为应用程序开发提供了许多可使用的框架,并构成IOS操作系统的层次架构,分为四层,从上到下依次为:Cocoa Touch Layer(触摸UI层).MediaLayer(媒体层).Cor ...

  5. iOS 常用框架介绍

    iOS框架介绍      Cocoa Touch GameKit  实现对游戏中心的支持,让用户能够在线共享他们的游戏相关的信息  iOS设备之间蓝牙数据传输   从iOS7开始过期   局域网游戏 ...

  6. ios 关于常用的一些第三方框架的介绍

    本文转载自:http://blog.csdn.net/xiaoyuertongxue/article/details/46982879 图像:  1.图片浏览控件MWPhotoBrowser 实现了一 ...

  7. iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)--(转)

    图像:  1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.  ...

  8. (转)iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)

    图像: 1.图片浏览控件MWPhotoBrowser  实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. ...

  9. openbmc开发16:配置文件详细介绍

      为什么要介绍配置文件,因为配置文件非常重要.纵观git下来的openbmc,你可以发现里面bitbake.devtool等基本都是python代码或者shell脚本,除此之外基本看不到c或者C++ ...

最新文章

  1. kubernetes(七)项目部署方式:蓝绿部署,灰度发布/金丝雀发布,滚动更新
  2. Hexo Next主题进阶教程
  3. Kibana linux下安装
  4. 幼师学计算机心得体会怎么写,幼儿教师学习心得
  5. 图卷积网络进行骨骼识别代码_深兰科学院:动作识别——人体骨架时空图卷积网络的关节图构造方法简介...
  6. Java开发笔记(一百四十九)引入预报告的好处
  7. java模拟器_KEmulator(java模拟器)
  8. A4排成A3双面打印怎么操作
  9. javaweb学习路线
  10. MongoDB 使用Index
  11. Android自定义控件 ---- 带下划线的TextView
  12. c语言内存池中 二维数组,C语言内存池使用模型-2 - Mr.南柯 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  13. 怎么设置linux系统定时关机,Linux系统定时关机
  14. 宽带电力载波灯控方案有哪些优势
  15. 电子计算机的说明文600字,关于电脑的说明文作文600字
  16. Ubuntu安装搜狗输入法指南
  17. 上传EXCEL,并下载模板
  18. 模电学习10. MOS管简单应用电路
  19. 输入年月日计算是本年的第多少天
  20. 清华大学陈拓2019计算机,10月30日,陈拓(清华大学经管学院)

热门文章

  1. Python系列之入门篇——python2.7.13安装
  2. html5 填表 表单 input output 与表单验证
  3. (转)HTTP 长连接和短连接
  4. android px,dp,sp大小转换工具
  5. transition过渡的趣玩
  6. SpringMVC学习--参数绑定
  7. 常用代码生成工具介绍
  8. C++学习——c语言和C++语言中的struct
  9. 计算机视觉-SIFT
  10. MYSQL--事务隔离