当前位置:   article > 正文

CoreImage的使用及常见滤镜工具(一)_coreimage锐化滤镜

coreimage锐化滤镜


概述:

CoreImage是一个图像框架,它基于OpenGL顶层创建,底层则用着色器来处理图像,这意味着它利用了GPU基于硬件加速来处理图像。CoreImage中有很多滤镜,它们能够一次给予一张图像或者视频帧多种视觉效果。而且滤镜可以连接起来组成一个滤镜链,把滤镜效果叠加起来处理图像。

CoreImage框架最早出现于iOS5,iOS6也对这个框架进行了扩展,这篇博客的Demo是基于iOS7的。


CoreImage框架最常用的类:


* CIImage

保存图像数据的类,可以通过UIImage,图像文件或者像素数据来创建,包括未处理的像素数据如:

- imageWithCVPixelBuffer:

- imageWithData:

方法等等。

也可以通过图像数据类比如UIImage,CGImageRef等等。


* CIFilter

滤镜类,这个框架中对图片属性进行细节处理的类。它对所有的像素进行操作,用一些键-值设置来决定具体操作的程度。


* CIContext

上下文类,如CoreGraphics以及CoreData中的上下文用于处理绘制渲染以及处理托管对象一样,CoreImage的上下文也是实现对图像处理的具体对象。

这里需要注意的是在Context创建的时候,我们需要给它设定为是基于GPU还是CPU。(这里使用GPU)

基于GPU的话,处理速度更快,因为利用了GPU硬件的并行优势。但是GPU受限于硬件纹理尺寸,而且如果你的程序在后台继续处理和保存图片的话,那么需要使用CPU,因为当app切换到后台状态时GPU处理会被打断。


简单使用:

简介完三个类之后,介绍下简单使用步骤:

实例化一个CIImage,

创建一个你需要的CIFilter滤镜并给滤镜设置属性,

创建CIContext上下文来初始化一个CGImageRef对象,

再将其赋给UIImage对象进行显示。


这篇文章采用工具类的方法来进行滤镜处理。


下面是一个简单的棕色滤镜的使用:

  1. NSURL *url = [NSURL fileURLWithPath:path];
  2. CIImage *coreImage = [CIImage imageWithContentsOfURL:url];
  3. CIFilter *sepiaFilter = [CIFilter filterWit
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/125095
推荐阅读
相关标签
  

闽ICP备14008679号