CoreImage(二)CIFilter滤镜效果使用

CIFilter滤镜效果使用

CIFilter是使用CoreImage进行滤镜效果的核心类,通过这个类设置(KVC设置)需要的效果和属性,对图片进行细节处理。

滤镜效果

API一共提供了以下的效果分类,每个效果分类又有很多具体子分类,网上也没有找到每个效果介绍,只能查看苹果官方文档,用我四级的英语水平结合实用大概翻译了下...(大部分翻译不准确可随意吐槽)

//失真效果 改变几何形状创建3D效果
CORE_IMAGE_EXPORT NSString * const kCICategoryDistortionEffect;
//扭曲图片和纠正源图像问题,例如仿射变换来校正相对于地平线旋转的图像
CORE_IMAGE_EXPORT NSString * const kCICategoryGeometryAdjustment;
//合成滤镜,操作两个图像源
CORE_IMAGE_EXPORT NSString * const kCICategoryCompositeOperation;
//半色调效果
CORE_IMAGE_EXPORT NSString * const kCICategoryHalftoneEffect;
//色彩调整,用于消除色彩偏移、校正亮度和对比度
CORE_IMAGE_EXPORT NSString * const kCICategoryColorAdjustment;
//修改图像颜色,我们一般用的比较多,类似美图工具的滤镜效果
CORE_IMAGE_EXPORT NSString * const kCICategoryColorEffect;
//
CORE_IMAGE_EXPORT NSString * const kCICategoryTransition;
//瓦片效果 平铺图片
CORE_IMAGE_EXPORT NSString * const kCICategoryTileEffect;
//产生图案的过滤器,如纯色、棋盘或星星的光泽。生成的输出通常用作对另一个过滤器的输入。
CORE_IMAGE_EXPORT NSString * const kCICategoryGenerator;
//减少图像数据 解决图像分析问题
CORE_IMAGE_EXPORT NSString * const kCICategoryReduction NS_AVAILABLE(10_5, 5_0);
//渐变效果
CORE_IMAGE_EXPORT NSString * const kCICategoryGradient;
//绘画风格
CORE_IMAGE_EXPORT NSString * const kCICategoryStylize;
//锐化图像 锐化掩模和提高亮度。
CORE_IMAGE_EXPORT NSString * const kCICategorySharpen;
//柔滑图像,主要用于模糊图像
CORE_IMAGE_EXPORT NSString * const kCICategoryBlur;
//处理视频图像
CORE_IMAGE_EXPORT NSString * const kCICategoryVideo;
//处理静态图像
CORE_IMAGE_EXPORT NSString * const kCICategoryStillImage;
//处理交错图像
CORE_IMAGE_EXPORT NSString * const kCICategoryInterlaced;
//处理非方形图像
CORE_IMAGE_EXPORT NSString * const kCICategoryNonSquarePixels;
//处理高动态图像
CORE_IMAGE_EXPORT NSString * const kCICategoryHighDynamicRange;
//用于区分built-in filters  plug-in filters.
CORE_IMAGE_EXPORT NSString * const kCICategoryBuiltIn;
//链接几个过滤器
CORE_IMAGE_EXPORT NSString * const kCICategoryFilterGenerator NS_AVAILABLE(10_5, 9_0);

具体滤镜名字

上面的是一个大滤镜类型,我们代码中使用的是具体的某个滤镜名字,可用代码获取所有滤镜的名字

//获取kCICategoryStylize类型所有滤镜的名字和属性设置
  NSArray* filters =  [CIFilter filterNamesInCategory:kCICategoryStylize];
    for (NSString* filterName in filters) {
        NSLog(@"filter name:%@",filterName);
        // 我们可以通过filterName创建对应的滤镜对象
        CIFilter* filter = [CIFilter filterWithName:filterName];
        NSDictionary* attributes = [filter attributes];
        // 获取属性键/值对(在这个字典中我们可以看到滤镜的属性以及对应的key)
        NSLog(@"filter attributes:%@",attributes);
    }

使用方法

1.创建CIImage
2.创建CIFilter滤镜
3.用kvc给CIFilter设置属性(或者可调用setdefault设置默认属性)
4.创建CIContext上下文
5.初始化CGImageRef对象,赋给UIImage对象

    //获取图片 
    CIImage *image = [CIImage imageWithCGImage:[_image CGImage]];
    //创建CIFilter CIMinimumComponent黑白 CIPhotoEffectFade相册
    CIFilter *filter = [CIFilter filterWithName:@"CIMinimumComponent"
    [filter setValue:image forKey:kCIInputImageKey];
    //进行默认设置
    [filter setDefaults];
    //创建CIContext对象
    CIContext *context = [CIContext contextWithOptions:nil];
    //创建处理后的图片
    CIImage *resultImage = filter.outputImage;
    CGImageRef imageRef = [context createCGImage:resultImage fromRect:CGRectMake(0,0,self.image.size.width,self.image.size.height)];
    UIImage *resultImg = [UIImage imageWithCGImage:imageRef];
    [_imageView setImage:resultImg];
    CFRelease(imageRef);

原图

黑白效果

相片效果

Demo

Demo地址:CIFilter滤镜效果使用
demo中有具体滤镜的使用方式,图片的保存。 提供了一些常用的滤镜的效果,二维码和条形码生成的方法,滤镜的叠加使用。

demo图

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,175评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,674评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,151评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,597评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,505评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,969评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,455评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,118评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,227评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,213评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,214评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,928评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,512评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,616评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,848评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,228评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,772评论 2 339

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,973评论 4 60
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,559评论 18 139
  • 前几天,在朋友圈看到一篇文章:《为什么中国白领患有“体检恐惧症”?》,文章本身姑且不论,文后的跟帖倒是耐人寻味。 ...
    谈心社阅读 25,962评论 125 617
  • “知识的诅咒”概念:当一个人知道一件事后,他就无法想象自己是不知道这件事的。 比如 原著党知道原著的内容,并且喜欢...
    大大大大大头哥哥阅读 360评论 0 0
  • 终于和一个神交已久的女生正式认识,聊起来发现俩个人相似的地方不止是来回同一班车。住同一个小区,每天同一个时间搭乘同...
    锺琬阅读 272评论 0 0