oc版本号

//万花筒模式
+ (CGImageRef) getKaleidoscope:(CIContext *)context
{
CIImage * image =
[CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage]; CIFilter * kaleidoscope = [CIFilter filterWithName:@"CIKaleidoscope"];
[kaleidoscope setDefaults];
[kaleidoscope setValue:image forKey:kCIInputImageKey];
[kaleidoscope setValue:[CIVector vectorWithX:5 Y:0] forKey:kCIInputCenterKey];
CIImage * result = [kaleidoscope valueForKey:kCIOutputImageKey]; CGRect extent = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:extent]; return cgImage;
} //凹凸变形
+ (CGImageRef) getBumpDistortion:(CIContext *)context
{
CIImage * image =
[CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage];
CIFilter * bumpDistortion = [CIFilter filterWithName:@"CIBumpDistortion"];
[bumpDistortion setDefaults];
[bumpDistortion setValue:image forKey:kCIInputImageKey];
[bumpDistortion setValue:[CIVector vectorWithX:10 Y:5] forKey:kCIInputCenterKey];
[bumpDistortion setValue:@55.0f forKey:kCIInputRadiusKey];
[bumpDistortion setValue:@(3.0f) forKey:kCIInputScaleKey];
CIImage * result = [bumpDistortion valueForKey:kCIOutputImageKey]; CGRect extent = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:extent];
return cgImage;
} //色调调整
+ (CGImageRef) getHueAdjust:(CIContext *)context
{
CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage];
CIFilter * hueAdjust = [CIFilter filterWithName:@"CIHueAdjust"];
[hueAdjust setValue:image forKey:kCIInputImageKey];
[hueAdjust setValue:@2.094f forKey:kCIInputAngleKey];
CIImage * result = [hueAdjust valueForKey:kCIOutputImageKey];
CGRect extent = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:extent];
return cgImage;
} //变暗
+ (CGImageRef) getGloom:(CIContext *) context
{
CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage];
CIFilter * gloom = [CIFilter filterWithName:@"CIGloom"];
[gloom setDefaults];
[gloom setValue:image forKey:kCIInputImageKey];
[gloom setValue:@5.0f forKey:kCIInputRadiusKey];
[gloom setValue:@1.0f forKey:kCIInputIntensityKey];
CIImage * result = [gloom valueForKey:kCIOutputImageKey];
CGRect extent = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:extent];
return cgImage;
} //深褐色调
+ (CGImageRef) getSepiaTone:(CIContext *) context
{
CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage];
CIFilter * sepiaTone = [CIFilter filterWithName:@"CISepiaTone"];
[sepiaTone setDefaults];
[sepiaTone setValue:image forKey:kCIInputImageKey];
[sepiaTone setValue:@0.8f forKey:kCIInputIntensityKey];
CIImage * result = [sepiaTone valueForKey:kCIOutputImageKey];
CGRect extent = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:extent];
return cgImage;
} //合成
+ (CGImageRef) getAdditionCompositing:(CIContext *) context
{
CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage]; CIImage * image1 = [CIImage imageWithCGImage:[UIImage imageNamed:@"ren"].CGImage]; CIFilter * accordionFoldTransition = [CIFilter filterWithName:@"CIAdditionCompositing"];
[accordionFoldTransition setDefaults];
[accordionFoldTransition setValue:image forKey:kCIInputImageKey];
[accordionFoldTransition setValue:image1 forKey:kCIInputBackgroundImageKey];
CIImage * result = [accordionFoldTransition valueForKey:kCIOutputImageKey];
CGRect extent = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:extent];
return cgImage;
}
//高斯模糊
+ (CGImageRef) getGaussianBlur:(CIContext *) context
{
CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage];
CIFilter * gaussianBlur = [CIFilter filterWithName:@"CIGaussianBlur"];
[gaussianBlur setDefaults];
[gaussianBlur setValue:image forKey:kCIInputImageKey];
[gaussianBlur setValue:@5.0f forKey:kCIInputRadiusKey]; CIImage * result = [gaussianBlur valueForKey:kCIOutputImageKey];
CGRect extent = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:extent];
return cgImage;
} //变焦模糊
+ (CGImageRef) getZoomBlur:(CIContext *) context
{
CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage];
CIFilter * zoomBlur = [CIFilter filterWithName:@"CIZoomBlur"];
[zoomBlur setDefaults];
[zoomBlur setValue:image forKey:kCIInputImageKey];
[zoomBlur setValue:@10.0f forKey:@"inputAmount"];
[zoomBlur setValue:[CIVector vectorWithCGPoint:CGPointMake(10, 10)] forKey:kCIInputCenterKey]; CIImage * result = [zoomBlur valueForKey:kCIOutputImageKey];
CGRect extent = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:extent];
return cgImage;
} //白点调整
+ (CGImageRef) getWhitePointAdjust:(CIContext *) context
{
CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage];
CIFilter * zoomBlur = [CIFilter filterWithName:@"CIWhitePointAdjust"];
[zoomBlur setDefaults];
[zoomBlur setValue:image forKey:kCIInputImageKey];
[zoomBlur setValue:[CIColor colorWithRed:1.0 green:0.5 blue:1.0 alpha:1.0] forKey:@"inputColor"]; CIImage * result = [zoomBlur valueForKey:kCIOutputImageKey];
CGRect extent = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:extent];
return cgImage;
} //标签效应
+ (CGImageRef) getVignetteEffect:(CIContext *) context
{
CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage];
CIFilter * zoomBlur = [CIFilter filterWithName:@"CIVignetteEffect"];
[zoomBlur setDefaults];
[zoomBlur setValue:image forKey:kCIInputImageKey];
[zoomBlur setValue:[CIVector vectorWithCGPoint:CGPointMake(10, 10)] forKey:kCIInputCenterKey];
[zoomBlur setValue:@0.5f forKey:@"inputFalloff"];
[zoomBlur setValue:@1.0f forKey:@"inputIntensity"];
[zoomBlur setValue:@100.0f forKey:@"inputRadius"]; CIImage * result = [zoomBlur valueForKey:kCIOutputImageKey];
CGRect extent = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:extent];
return cgImage;
} //多个效果合成
+ (CGImageRef) getMix:(CIContext *) context
{
CIImage * image = [CIImage imageWithCGImage:[UIImage imageNamed:@"Icon"].CGImage];
CIFilter * zoomBlur = [CIFilter filterWithName:@"CIVignetteEffect"];
[zoomBlur setDefaults];
[zoomBlur setValue:image forKey:kCIInputImageKey];
[zoomBlur setValue:[CIVector vectorWithCGPoint:CGPointMake(10, 10)] forKey:kCIInputCenterKey];
[zoomBlur setValue:@0.5f forKey:@"inputFalloff"];
[zoomBlur setValue:@1.0f forKey:@"inputIntensity"];
[zoomBlur setValue:@100.0f forKey:@"inputRadius"]; CIImage * result = [zoomBlur valueForKey:kCIOutputImageKey]; CIFilter * gaussianBlur = [CIFilter filterWithName:@"CIGaussianBlur"];
[gaussianBlur setDefaults];
[gaussianBlur setValue:result forKey:kCIInputImageKey];
[gaussianBlur setValue:@5.0f forKey:kCIInputRadiusKey]; result = [gaussianBlur valueForKey:kCIOutputImageKey]; CGRect extent = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:extent];
return cgImage;
}

以上介绍了几个滤镜模式,假设想查询系统内置了多少种滤镜,能够运行下面代码查看:

//查看全部内置滤镜

NSArray *filterNames=[CIFilterfilterNamesInCategory:kCICategoryBuiltIn];
for (NSString *filterNamein filterNames) {
CIFilter *filter=[CIFilterfilterWithName:filterName];
NSLog(@"\rfilter:%@\rattributes:%@",filterName,[filterattributes]);
}

以下截取控制台输出的部分滤镜消息。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

就拿CIZoomBlur滤镜模式来说。打印出来的信息。能够看到,里面定义了一些属性(每种滤镜,所含有的属性会有区别。在使用的时候,特别要注意)。

属性名称能够使用定义好的结构体成员kCIInputImageKey。或者直接@"inputImage"调用,都是表示输入的图片。

inputImage相应的value里面定义了这个属性是什么类型的。属性描写叙述等。

假设须要其它滤镜模式的能够去查看。

swift版本号

//万花筒模式
static func getKaleidoscope(context: CIContext) -> CGImageRef { let imageName = UIImage(named:"Icon")? .CGImage let image = CIImage(CGImage: (imageName)!) let kaleidoscope = CIFilter(name:"CIKaleidoscope");
kaleidoscope? .setDefaults();
kaleidoscope?.setValue(image, forKey: kCIInputImageKey);
kaleidoscope?.setValue(CIVector(x: 5, y: 0), forKey: kCIInputCenterKey); let result = kaleidoscope?.valueForKey(kCIOutputImageKey); let extent = result?.extent; let cgImage = context.createCGImage(result as! CIImage, fromRect: extent!)
return cgImage
} //凹凸变形
static func getBumpDistortion(context: CIContext) -> CGImageRef {
let imageName = UIImage(named:"Icon")? .CGImage
let image = CIImage(CGImage: (imageName)!) let bumpDistortion = CIFilter(name: "CIBumpDistortion")
bumpDistortion?.setDefaults()
bumpDistortion?.setValue(image, forKey: kCIInputImageKey)
bumpDistortion? .setValue(CIVector(x: 10, y: 5), forKey: kCIInputCenterKey)
bumpDistortion? .setValue(55.0, forKey: kCIInputRadiusKey)
bumpDistortion?.setValue(3.0, forKey: kCIInputScaleKey)
let result = bumpDistortion?.valueForKey(kCIOutputImageKey); let extent = result?.extent;
let cgImage = context.createCGImage(result as! CIImage, fromRect: extent!)
return cgImage
} //色调调整
static func getHueAdjust(context: CIContext) -> CGImageRef {
let imageName = UIImage(named:"Icon")? .CGImage
let image = CIImage(CGImage: (imageName)!)
let hueAdjust = CIFilter(name: "CIHueAdjust")
hueAdjust?.setValue(image, forKey: kCIInputImageKey)
hueAdjust?.setValue(2.094, forKey:kCIInputAngleKey) let result = hueAdjust?.valueForKey(kCIOutputImageKey); let extent = result?.extent;
let cgImage = context.createCGImage(result as! CIImage, fromRect: extent!)
return cgImage
} //变暗
static func getGloom(context: CIContext) -> CGImageRef {
let imageName = UIImage(named:"Icon")?.CGImage
let image = CIImage(CGImage: (imageName)!) let gloom = CIFilter(name: "CIGloom")
gloom?.setDefaults()
gloom?.setValue(image, forKey: kCIInputImageKey)
gloom?.setValue(5.0, forKey: kCIInputRadiusKey)
gloom?.setValue(1.0, forKey: kCIInputIntensityKey) let result = gloom?.valueForKey(kCIOutputImageKey); let extent = result?.extent;
let cgImage = context.createCGImage(result as! CIImage, fromRect: extent!)
return cgImage
} //深褐色调
static func getSepiaTone(context: CIContext) -> CGImageRef {
let imageName = UIImage(named:"Icon")?.CGImage
let image = CIImage(CGImage: (imageName)!) let sepiaTone = CIFilter(name: "CISepiaTone")
sepiaTone?.setDefaults()
sepiaTone?.setValue(image, forKey: kCIInputImageKey)
sepiaTone?.setValue(0.8, forKey: kCIInputIntensityKey) let result = sepiaTone? .valueForKey(kCIOutputImageKey); let extent = result? .extent;
let cgImage = context.createCGImage(result as! CIImage, fromRect: extent!)
return cgImage
} //合成
static func getAdditionCompositing(context: CIContext) -> CGImageRef { let imageName = UIImage(named:"Icon")?.CGImage
let image = CIImage(CGImage: (imageName)!)
let image1 = CIImage(CGImage: (UIImage(named:"ren")?.CGImage)!) let accordionFoldTransition = CIFilter(name: "CIAdditionCompositing");
accordionFoldTransition? .setDefaults()
accordionFoldTransition?.setValue(image, forKey: kCIInputImageKey)
accordionFoldTransition?.setValue(image1, forKey: kCIInputBackgroundImageKey) let result = accordionFoldTransition? .valueForKey(kCIOutputImageKey); let extent = result?.extent;
let cgImage = context.createCGImage(result as! CIImage, fromRect: extent!)
return cgImage
} //高斯模糊
static func getGaussianBlur(context: CIContext) -> CGImageRef {
let imageName = UIImage(named:"Icon")?.CGImage
let image = CIImage(CGImage: (imageName)!) let gaussianBlur = CIFilter(name: "CIGaussianBlur")
gaussianBlur?.setDefaults()
gaussianBlur? .setValue(image, forKey: kCIInputImageKey)
gaussianBlur?.setValue(5.0, forKey: kCIInputRadiusKey) let result = gaussianBlur?.valueForKey(kCIOutputImageKey); let extent = result?.extent;
let cgImage = context.createCGImage(result as! CIImage, fromRect: extent!)
return cgImage
} //变焦模糊
static func getZoomBlur(context: CIContext) -> CGImageRef {
let imageName = UIImage(named:"Icon")?.CGImage
let image = CIImage(CGImage: (imageName)!) let zoomBlur = CIFilter(name: "CIZoomBlur")
zoomBlur?.setDefaults()
zoomBlur? .setValue(image, forKey: kCIInputImageKey)
zoomBlur?.setValue(10.0, forKey: "inputAmount")
zoomBlur?.setValue(CIVector(x: 10, y: 10), forKey: kCIInputCenterKey) let result = zoomBlur? .valueForKey(kCIOutputImageKey); let extent = result?.extent;
let cgImage = context.createCGImage(result as! CIImage, fromRect: extent!)
return cgImage
} //白点调整
static func getWhitePointAdjust(context: CIContext) -> CGImageRef {
let imageName = UIImage(named:"Icon")? .CGImage
let image = CIImage(CGImage: (imageName)!) let whitePointAdjust = CIFilter(name: "CIWhitePointAdjust")
whitePointAdjust?.setDefaults()
whitePointAdjust?.setValue(image, forKey: kCIInputImageKey)
whitePointAdjust?.setValue(CIColor(red: 1.0, green: 0.5, blue: 1.0, alpha: 1.0), forKey: "inputColor") let result = whitePointAdjust?.valueForKey(kCIOutputImageKey); let extent = result? .extent;
let cgImage = context.createCGImage(result as! CIImage, fromRect: extent!)
return cgImage
} //标签效应
static func getVignetteEffect(context: CIContext) -> CGImageRef {
let imageName = UIImage(named:"Icon")?.CGImage
let image = CIImage(CGImage: (imageName)!)
let vignetteEffect = CIFilter(name: "CIVignetteEffect")
vignetteEffect?.setDefaults()
vignetteEffect?.setValue(image, forKey: kCIInputImageKey)
vignetteEffect?.setValue(CIVector(x: 10, y: 10), forKey: kCIInputCenterKey)
vignetteEffect? .setValue(0.5, forKey: "inputFalloff")
vignetteEffect? .setValue(1.0, forKey: "inputIntensity")
vignetteEffect?.setValue(100.0, forKey: "inputRadius") let result = vignetteEffect?.valueForKey(kCIOutputImageKey); let extent = result?.extent;
let cgImage = context.createCGImage(result as! CIImage, fromRect: extent!)
return cgImage
} //多个效果合成
static func getMix(context: CIContext) -> CGImageRef {
let imageName = UIImage(named:"Icon")?.CGImage
let image = CIImage(CGImage: (imageName)!) let vignetteEffect = CIFilter(name: "CIVignetteEffect")
vignetteEffect?.setDefaults()
vignetteEffect?.setValue(image, forKey: kCIInputImageKey)
vignetteEffect? .setValue(0.5, forKey: "inputFalloff")
vignetteEffect?.setValue(1.0, forKey: "inputIntensity")
vignetteEffect? .setValue(100.0, forKey: "inputRadius") var result = vignetteEffect?.valueForKey(kCIOutputImageKey); let gaussianBlur = CIFilter(name: "CIGaussianBlur")
gaussianBlur? .setDefaults()
gaussianBlur?.setValue(result, forKey: kCIInputImageKey)
gaussianBlur? .setValue(5.0, forKey: kCIInputRadiusKey) result = gaussianBlur?.valueForKey(kCIOutputImageKey); let extent = result?.extent;
let cgImage = context.createCGImage(result as! CIImage, fromRect: extent!)
return cgImage
}

以上介绍了几个滤镜模式,假设想查询系统内置了多少种滤镜。能够运行下面代码查看:

//查看全部内置滤镜

let filterNames = CIFilter.filterNamesInCategory(kCICategoryBuiltIn)

        for filterName in filterNames {
let filter = CIFilter(name: filterName)
print("\rfilter:\(filterName)\rattributes:\(filter?.attributes)")
}

以下截取控制台输出的部分滤镜消息。

就拿CIZoomBlur滤镜模式来说,打印出来的信息,能够看到,里面定义了一些属性(每种滤镜,所含有的属性会有区别。在使用的时候,特别要注意)。

属性名称能够使用定义好的结构体成员kCIInputImageKey,或者直接"inputImage"调用,都是表示输入的图片。

inputImage相应的value里面定义了这个属性是什么类型的。属性描写叙述等。假设须要其它滤镜模式的能够去查看。

project下载地址:http://download.csdn.net/detail/xiaopingping1234567/9458261

core image几个滤镜样例 oc版本号和swift版本号的更多相关文章

  1. C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

  2. 关于peersim样例配置文件的超详细解读(新手勿喷)

    相信很多兄弟一开始接触peersim,对配置文件还是有点不适应,我看了好久的样例的配置文件,一层层去找对应的文件的方法,终于好像悟懂了一点,记下来以后回顾. 贴上代码,一点点分析. 首先要说下所谓的配 ...

  3. Swift - 自动布局库SnapKit的使用详解1(配置、使用方法、样例)

    为了适应各种屏幕尺寸,iOS 6后引入了自动布局(Auto Layout)的概念,通过使用各种 Constraint(约束)来实现页面自适应弹性布局. 在 StoryBoard 中使用约束实现自动布局 ...

  4. 使用ffmpeg实现转码样例(代码实现)

    分类: C/C++ 使用ffmpeg实现转码样例(代码实现) 使用ffmpeg转码主要工作如下: Demux -> Decoding -> Encoding -> Muxing 其中 ...

  5. RHEL5 X86-64上安装Oracle 11gR2演示样例与总结

    进入Oracle DBA行业也有好几年了,可是说到安装Oracle的经验,我还真不是特别多,印象中刚開始每次安装都有点磕磕碰碰,随着接触Oracle的时间越来越长,各方面的原理.机制也都有一定的了解后 ...

  6. Spring MVC使用样例

    Spring MVC使用样例 步骤1:添加Spring的相关依赖 1 <dependency> 2 3 <groupId>com.alibaba.external</gr ...

  7. 第一个Angular2的样例

    欢迎跟我一起学习Angular2 本文根据angular2官网手动敲码得来: 本文地址:http://blog.csdn.net/sushengmiyan 本文作者:苏生米沿 - 开发环境搭建 - 配 ...

  8. scrapy爬虫学习系列二:scrapy简单爬虫样例学习

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  9. Sakila——MySQL样例数据库解析(已经迁移)

    一.Introduction Sakila可以作为数据库设计的参考,也可作为实验数据.我是用作数据仓库和ODI学习的实验数据. The Sakila sample database was devel ...

随机推荐

  1. POJ 3068 "Shortest" pair of paths(费用流)

    [题目链接] http://poj.org/problem?id=3068 [题目大意] 给出一张图,要把两个物品从起点运到终点,他们不能运同一条路过 每条路都有一定的费用,求最小费用 [题解] 题目 ...

  2. 【数论】【枚举约数】【友好数】CODEVS 2632 非常好友

    O(sqrt(n))枚举约数,根据定义暴力判断友好数. #include<cstdio> #include<cmath> using namespace std; int n; ...

  3. 6.2(java学习笔记)字节流

    一.FileInputStream 文件输入流从文件中获取输入字节.简单的说就是读取文件. 1.构造方法 FileInputStream(File file)//根据指定文件对象创建一个输入流 2.常 ...

  4. [OpenJudge8782][划分DP]乘积最大

    乘积最大 总时间限制: 1000ms 内存限制: 65536kB [描述] 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛, ...

  5. javascript正则表达式(regular expression)

    一种字符串匹配的模式,用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等.注意:在javascript中正则表达式也是一种对象1:创建正则表达式两种方式:隐式创建( ...

  6. RUEI 13.1.1版本在OEL 5.7上的安装

    准备工作 ntp的工作和同步 /sbin/chkconfig --list | grep ntpd ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off /sb ...

  7. uber shader

    shader 合在一起 用一些宏来控制 选哪部分编成一个想要的shader https://docs.unity3d.com/Manual/SL-MultipleProgramVariants.htm ...

  8. Shell--数据流重定向

    数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他地方 标准 1.标准输入(stdin):代码为0,使用<或<< 2.标准输出(stdout):代码为1.,使用> ...

  9. LeetCode(28)Implement strStr()

    题目 Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if nee ...

  10. SSH 错误解决案例1:Read from socket failed: Connection reset by peer

    今天早上天天连接的开发机突然报出连接错误. 这个错误是SSH最常见错误,造成的原因也是千奇百怪(具体可goole),下面描述我的server的问题: 客户端报错 [root@server]# ssh ...