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 ...
随机推荐
- 【指数型母函数】hdu1521 排列组合
#include<cstdio> #include<cstring> using namespace std; int n,m,jiecheng[11]; double a[1 ...
- 【线段树】bzoj3922 Karin的弹幕
设置一个值K. d<=K:建立多组线段树:d>K:暴力. 最优时间复杂度的伪计算: O(n*K*logn(建树)+m*logn(询问类型1)+m*n/K(询问类型2)+m*K*logn(修 ...
- 【DFS】【最短路】【spfa】【BFS】洛谷P2296 NOIP2014提高组 day2 T2 寻找道路
存反图,从终点dfs一遍,记录下无法到达的点. 然后枚举这些记录的点,把他们的出边所连的点也全部记录. 以上这些点都是无法在最短路中出现的. 所以把两个端点都没被记录的边加进图里,跑spfa.BFS什 ...
- [Interview] 程序员如何制作一份漂亮的面试简历
简历模板 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; ...
- java-List集合遍历,删除或增加特定的元素
1.for(int i=0; i<list.size(); i++) 2.for(Object object : list) 实质调用的 list.iterator() 3.list.iter ...
- 魅族 -- 禁止D及以下级别LOG的输出
真机调试时:Log.d()打印不出信息,模拟器可以. 使用的手机:魅族. 状况:禁止D及以下级别LOG的输出. PS.Log.d("h_bl", "进入执行") ...
- 如何订阅Linux相关的邮件列表
转:http://blog.163.com/sunshine_linting/blog/static/44893323201282114012845/ 1.google"linux kern ...
- Git -- git中本地与远程库的关联与取消
1.在本地目录下关联远程repository : git remote add origin git@github.com:git_username/repository_name.git 2.取消本 ...
- Android Studio使用过程中Java类突然报红,但项目可运行解决方案
1.点击File->Invalidate Caches / Restart... 2.重启Gradle,清除缓存 3.Clean Project
- PHP中使用XMLRPC
PHP中简单使用XMLRPC,服务器端和客户端都为PHP代码实现. 这里使用的XML-RPC完整包括client和server的XML-RPC实现. 客户端和服务器端分别由 xmlrpc_client ...