core image几个滤镜样例 oc版本号和swift版本号
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版本号的更多相关文章
- C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例
之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...
- 关于peersim样例配置文件的超详细解读(新手勿喷)
相信很多兄弟一开始接触peersim,对配置文件还是有点不适应,我看了好久的样例的配置文件,一层层去找对应的文件的方法,终于好像悟懂了一点,记下来以后回顾. 贴上代码,一点点分析. 首先要说下所谓的配 ...
- Swift - 自动布局库SnapKit的使用详解1(配置、使用方法、样例)
为了适应各种屏幕尺寸,iOS 6后引入了自动布局(Auto Layout)的概念,通过使用各种 Constraint(约束)来实现页面自适应弹性布局. 在 StoryBoard 中使用约束实现自动布局 ...
- 使用ffmpeg实现转码样例(代码实现)
分类: C/C++ 使用ffmpeg实现转码样例(代码实现) 使用ffmpeg转码主要工作如下: Demux -> Decoding -> Encoding -> Muxing 其中 ...
- RHEL5 X86-64上安装Oracle 11gR2演示样例与总结
进入Oracle DBA行业也有好几年了,可是说到安装Oracle的经验,我还真不是特别多,印象中刚開始每次安装都有点磕磕碰碰,随着接触Oracle的时间越来越长,各方面的原理.机制也都有一定的了解后 ...
- Spring MVC使用样例
Spring MVC使用样例 步骤1:添加Spring的相关依赖 1 <dependency> 2 3 <groupId>com.alibaba.external</gr ...
- 第一个Angular2的样例
欢迎跟我一起学习Angular2 本文根据angular2官网手动敲码得来: 本文地址:http://blog.csdn.net/sushengmiyan 本文作者:苏生米沿 - 开发环境搭建 - 配 ...
- scrapy爬虫学习系列二:scrapy简单爬虫样例学习
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...
- Sakila——MySQL样例数据库解析(已经迁移)
一.Introduction Sakila可以作为数据库设计的参考,也可作为实验数据.我是用作数据仓库和ODI学习的实验数据. The Sakila sample database was devel ...
随机推荐
- HashCode()的作用
在实现Hash算法的集合里面,例如HashSet,该集合不能存放相同的数据,HashSet会根据对象的equals()和hashCode()方法来判断要存放的数据是否已经存在.Hash算法把HashS ...
- python3 开发面试题(生成列表)6.1
话不多说直接上题: 生成如下列表: [[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8], [0, 3, 6, 9, 12]] # 方式一 list1 ...
- IIS8集成模式下打开静态资源被aspx处理程序处理,StaticFileModule失效问题分析
问题描述: 打开js,css,jpg之类的静态资源文件触发了asp.net mvc的权限认证,并不是直接返回静态内容 问题分析: StaticFileModule 失效 ,可能是文件权限问题 问题解决 ...
- 如何让Adobe reader 记住上次pdf文档打开位置?
菜单栏: Edit --> Preferences --> Documents --> 勾选 “Restore last view settings where reopening ...
- Word中插入带公式的Visio注意事项
有时候发现,有的公式显示的间距特别大,那么在word中右键打开Visio,改好后,保存了,word里还是那样. 因为你需要吧改好的另存为原来的visio文件(名字.位置要一样,就是说替换原来的文件), ...
- 我的vim配置---jeffy-vim-v2.1.tar
http://files.cnblogs.com/pengdonglin137/jeffy-vim-v2.1.rar 使用方法: 在Linux下,解压后,进入解压后的目录,执行./install.sh ...
- [转] C++ try catch() throw 异常处理
原文地址 其它很多程序员一样,本书的主人公阿愚也是在初学C++时,在C++的sample代码中与异常处理的编程方法初次邂逅的,如下: // Normal program statements . ...
- ios如何实现被键盘遮挡时,带有textfield的tableview自动上移
最正规的办法,用通知step 1:在进入视图的时候添加监视:(viewDidLoad什么的) 复制代码 // Observe keyboard hide and show notification ...
- Kubernetes dashboard集成heapster
图形化展示度量指标的实现需要集成k8s的另外一个Addons组件: Heapster . Heapster原生支持K8s(v1.0.6及以后版本)和 CoreOS ,并且支持多种存储后端,比如: In ...
- Linux查找并删除重复文件的命令行fdupes工具,dupeGuru图形工具
查了几十个网页,找到这个接近满意的解决方案http://unix.stackexchange.com/questions/146197/fdupes-delete-files-aft... 不过正则里 ...