在做图片处理的时候。会遇到调节图片的饱和度的问题,这里就要用到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. 京东首页原生----js制作|css动画|js动画|计时器--轮播图(好久没更新,这两天闲的蛋疼做个京东页面分辨率1366*768,919京东,适应没调!)要文件加关注找我要哦!

  2. WebP 的前世今生

    除了视频,图片占据了 PC 和 App 的大部分流量,为运营方带来高额的成本支出,同时过多的图片加载会影响到网站与 App 的加载速度.因此在保证图片质量的前提下缩小图片的体积就成了迫在眉睫的事情. ...

  3. android 横竖屏切换不重走生命周期

    android在系统配置发生改变时,Activity会被重新创建,但是某些情况下我们希望系统配置改变时不会重新创建Activity,这个时候我们可以给Activity指定相对应的configChang ...

  4. 在为知笔记中使用Markdown和思维导图

    为知笔记Wiz是一款很好的网摘和笔记工具,作为为知的忠实用户,我在为知收费后第一时间就购买了两年的授权,毕竟这么多年积累的资料都在为知上,我也习惯了使用Wiz来做些工作相关的笔记.为知笔记自带Mark ...

  5. java继承系列之添加一个LinkLable类

    import java.awt.*; import javax.swing.*; import javax.swing.JFrame; import java.awt.event.WindowList ...

  6. 自动化部署必备技能—部署yum仓库、定制rpm包

    部署yum仓库.定制rpm包 目录 第1章 扩展 - yum缓存 1.1 yum缓存使用步骤... 1 1.1.1 导言... 1 1.1.2 修改配置文件... 1 1.1.3 使用缓存... 1 ...

  7. Vocabulary & Phrase

    Vocabulary A ANSI    美国国家标准学会,American National Standards Institute的缩写 a couple of    [口语]少数的,几个 a s ...

  8. MySQL原理相关

    1.索引 http://blog.codinglabs.org/articles/theory-of-mysql-index.html

  9. Python之多进程篇

    Process 创建子进程执行指定的函数 >>> from multiprocessing import Process,current_process >>> & ...

  10. Python之数据类型-[bisect,heap]

    bisect >>> import bisect >>> >>> b = [ 20, 34, 35, 65, 78 ] >>> ...