在做图片处理的时候。会遇到调节图片的饱和度的问题,这里就要用到Core Image这个框架,Core
Image
是一个非常强大的框架。

它能够让你简单地应用各种滤镜来处理图像,比方改动鲜艳程度, 色泽, 或者曝光。它利用GPU(或者CPU,取决于客户)来非常高速、甚至实时地处理图像数据和视频的帧。

多个CoreImage滤镜能够叠加在一起,从而能够一次性地产生多重滤镜效果。这样的多重滤镜的长处在于它能够生成一个改进的滤镜。从而一次性的处理图像达到目标效果,而不是对同一个图像顺序地多次应用单个滤镜。每个滤镜都有属于它自己的參数。这些參数和滤镜信息,比方功能、输入參数等都能够通过程序来查询。用户也能够来查询系统从而得到当前可用的滤镜信息。

到眼下为止。Mac上仅仅有一部分CoreImage滤镜能够在iOS上使用。可是随着这些可使用滤镜的数目越来越多。API能够用来发现新的滤镜属性。

以下是这个框架下的几个重要的类

CIContext:全部的图像处理都是在一个CIContext中完毕的。

CIImage 这个类保存图像数据,它能够从UIImage。图像文件或者是像素数据中构造出来。

CIFilter:滤镜类总保函一个字典结构,对各种滤镜定义了属于他们各自的属性。滤镜有非常多种,比方鲜艳程度的滤镜,色彩反转滤镜,剪裁滤镜等等。

用以下的我们来试试改动一张图片的饱和度,亮度,对照度。

首先用到的是CIFilter 我们能够通过字典来看看里面全部的

        NSArray *cifilter = [CIFilter filterNamesInCategory:kCICategoryBuiltIn];

        NSLog(@"FilterName:\n%@,,,===%ld", cifilter,cifilter.count);//显示全部过滤器名字

        for (NSString *filterName in cifilter) {

            CIFilter *fltr = [CIFilter filterWithName:filterName];//用一个过滤器名字生成一个过滤器CIFilter对象

            NSLog(@"%@:\n%@", filterName, [fltr attributes]);//这个过滤器支持的属性

        }

能够看见多有的属性

今天我们用到是滤镜名称是CIColorControls

/////////////////////////////////////

CIAttributeFilterDisplayName = "Color Controls";

    CIAttributeFilterName = CIColorControls;

    inputBrightness =     {

        CIAttributeClass = NSNumber;

        CIAttributeDefault = 0;

        CIAttributeIdentity = 0;

        CIAttributeSliderMax = 1;

        CIAttributeSliderMin = "-1";

        CIAttributeType = CIAttributeTypeScalar;

    };

    inputContrast =     {

        CIAttributeClass = NSNumber;

        CIAttributeDefault = 1;

        CIAttributeIdentity = 1;

        CIAttributeSliderMax = 4;

        CIAttributeSliderMin = 0;

        CIAttributeType = CIAttributeTypeScalar;

    };

    inputImage =     {

        CIAttributeClass = CIImage;

        CIAttributeType = CIAttributeTypeImage;

    };

    inputSaturation =     {

        CIAttributeClass = NSNumber;

        CIAttributeDefault = 1;

        CIAttributeIdentity = 1;

        CIAttributeSliderMax = 2;

        CIAttributeSliderMin = 0;

        CIAttributeType = CIAttributeTypeScalar;

    };

/////////////////////////////////////

上面是这个滤镜的名称和属性

以下是详细的改动图片的饱和度亮度和对照度的代码

    CIImage *beginImage = [CIImage imageWithCGImage:image.CGImage];
CIFilter * filter = [CIFilter filterWithName:@"CIColorControls"];
[filter setValue:beginImage forKey:kCIInputImageKey];
// 饱和度 0---2
[filter setValue:[NSNumber numberWithFloat:0.5] forKey:@"inputSaturation"];
// 亮度 10 -1---1
[filter setValue:[NSNumber numberWithFloat:0.5] forKey:@"inputBrightness"];
// 对照度 -11 0---4
[filter setValue:[NSNumber numberWithFloat:2] forKey:@"inputContrast"]; // 得到过滤后的图片
CIImage *outputImage = [filter outputImage];
// 转换图片, 创建基于GPU的CIContext对象
CIContext *context = [CIContext contextWithOptions: nil];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
UIImage *newImg = [UIImage imageWithCGImage:cgimg];
// 显示图片
[_imageV setImage:newImg];
// 释放C对象
CGImageRelease(cgimg);

这样就达到了改动图片属相的目的,大家能够学习一下

这个是苹果官方的关于coreImage 的介绍

https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/CoreImagingRef/_index.html#//apple_ref/doc/uid/TP40001171

这个是还有一个网友写的,我觉的不错。大家也能够看看。

http://blog.sina.com.cn/s/blog_83c2dd090101j5n5.html

iOS有关图片处理的总结 (四)------图片的饱和度,亮度,对照度。的更多相关文章

  1. IOS 截取图片 部分 并生成新图片

    /** * 从图片中按指定的位置大小截取图片的一部分 * * @param image UIImage image 原始的图片 * @param rect CGRect rect 要截取的区域 * * ...

  2. iOS开发UI篇—Quartz2D使用(图片剪切)

    iOS开发UI篇—Quartz2D使用(图片剪切) 一.使用Quartz2D完成图片剪切 1.把图片显示在自定义的view中 先把图片绘制到view上.按照原始大小,把图片绘制到一个点上. 代码: - ...

  3. 修正ios h5上传图时的图片方向问题

     .ios上传会在exif中带一个 Orientation的属性,这个属性在windows中不会生效,在ios浏览器中会生效,造成图片在windows资源管理器中与ios浏览器中方向不一致  为了用户 ...

  4. WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放、图片立体轮播、图片倒影立体滚动)效果实现

    原文:WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放.图片立体轮播.图片倒影立体滚动)效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7 ...

  5. iOS - 选取相册中iCloud云上图片和视频的处理

    关于iOS选取相册中iCloud云上图片和视频  推荐看:TZImagePickerController的源码,这个是一个非常靠谱的相册选择图片视频的库 .当然也可以自己写 如下遇到的问题 工作原因, ...

  6. AJ学IOS(55)多线程网络之图片下载框架之SDWebImage

    AJ分享,必须精品 效果: 代码: - (NSArray *)apps { if (!_apps) { NSArray *dictArray = [NSArray arrayWithContentsO ...

  7. 一个iOS图片选择器的DEMO(实现图片添加,宫格排列,图片长按删除,以及图片替换等功能)

    在开发中,经常用到选择多张图片进行上传或作其他处理等等,以下DEMO满足了此功能中的大部分功能,可直接使用到项目中. 主要功能如下: 1,图片九宫格排列(可自动设置) 2,图片长按抖动(仿苹果软件删除 ...

  8. Core Animation一些Demo总结 (动态切换图片、大转盘、图片折叠、进度条等动画效果)

    前一篇总结了Core Animation的一些基础知识,这一篇主要是Core Animation 的一些应用,涉及到CAShapeLayer.CAReplicatorLayer等图层的知识. 先看效果 ...

  9. Base64图片编码原理,base64图片工具介绍,图片在线转换Base64

    Base64图片编码原理,base64图片工具介绍,图片在线转换Base64 DataURI 允许在HTML文档中嵌入小文件,可以使用 img 标签或 CSS 嵌入转换后的 Base64 编码,减少  ...

  10. json序列化.xml序列化.图片转base64.base64转图片.生成缩略图.IEnumerable<TResult> Select<TSource, TResult>做数据转换的五种方式

     JSON序列化 /// <summary> /// JSON序列化 /// </summary> public static class SPDBJsonConvert { ...

随机推荐

  1. React + Node 单页应用「一」前端搭建

    项目地址 预览地址 原文地址 记录最近做的一个 demo,前端使用 React,用 React Router 实现前端路由,Koa 2 搭建 API Server, 最后通过 Nginx 做请求转发. ...

  2. 解决mysql启动失败报1067错误

    最近做项目使用 mysql 数据库 ,因为卸载了鲁大师造成了数据库文件缺失.重装mysql数据库后启动出现了1067错误,详情如下 在网上查了错误原因,将my.ini文件下的默认搜索引擎换成了 myi ...

  3. Easy UI下拉列表默认选中(多行)与为文本框赋值

    1.为单行文本框赋值 var data2 = $('#LoadArea').combobox("getData"); if (data2) { $('#id).combobox(' ...

  4. C#获得时间段

    DateTime today = dt.Date;//今天 00:00:00 DateTime tomorrow = dt.Date.AddDays(1);//明天 00:00:00 DateTime ...

  5. openstack安装在虚拟机上重启之后无法启动问题

    http://www.byywee.com/page/M0/S931/931767.html 运行rejoin-stack.sh脚本的核心: exec screen -c $TOP_DIR/stack ...

  6. IIS解决CPU和内存占用率过高的问题

    发现进程中的w3wp占用率过高. 经过查询,发现如下: w3wp.exe是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运 ...

  7. javascript函数式编程(一)

    一.引言 javascript函数式编程在最近两年来频繁的出现在大众的视野,越来越多的框架(react,angular,vue等)标榜自己使用了函数式编程的特性,好像一旦跟函数式编程沾边,就很高大上一 ...

  8. Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法

    找到Help Viewer程序的位置(可以使用Everything工具搜索microsoft help找到),发送到桌面快捷方式,打开此快捷方式的属性,在目标的最后添加下面那行字,然后即可通过快捷方式 ...

  9. Kaggle Challenge简要介绍

    https://en.wikipedia.org/wiki/Kaggle 以下内容,直接摘自维基百科,主要起到一个记录的作用,提醒自己有时间关注关注这个竞赛. Kaggle is a platform ...

  10. 用Python写一款属于自己的 简易zip压缩软件 附完成图(适合初学者)

    一.软件描述 用Python tkinter模块写一款属于自己的压缩软件.zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile来操作zip文件,具有功能:zip压缩功能,zip ...