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 ...
随机推荐
- [BZOJ 4034] 树上操作
Link: BZOJ 4034 传送门 Solution: 树剖模板题…… Code: #include <bits/stdc++.h> using namespace std; type ...
- centos7下解决python3和python2同时存在但是无法使用pip3的问题
一.首先,官网下载python3的所需版本. wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz 想下载到那个文件夹下就先进入到 ...
- Exercise01_01
public class print{ public static void main(String[] args){ System.out.println("Welcome to Java ...
- 一个简单的WeakList的实现
有的时候,我们会使用到WeakList,它和传统的List不同的是,保存的是对象的弱应用,在WeakList中存储的对象会被GC回收,在一些和UI相关的编程的地方会用到它(弱事件,窗体的通知订阅等). ...
- Delphi 设置时间格式
// 设置WINDOWS系统的短日期的格式SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, 'yyyy-MM-dd'); Applicat ...
- 根文件系统及Busybox简介
转:http://blog.csdn.net/wqc02/article/details/8930184 1.根文件系统简介...2 2.Busybox简介...2 2.1Busybox简介...2 ...
- 一些常用JS 函数总结
搜索url参数 /** * 搜索url参数 * @param {String} name 参数键名 * @return {String} 对应值 */ function getQueryVariabl ...
- ylbtech-LanguageSamples-ComInteropPart2(COM 互操作第二部分)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-ComInteropPart2(COM 互操作第二部分) 1.A,示例(Sample) ...
- js获取url參数值的两种方式具体解释
有个url例如以下: http://passport.csdn.net/account/login? from=http%3a%2f%2fwrite.blog.csdn.net%2fpostedit ...
- JAVA加解密 -- 消息摘要算法
消息摘要算法是一种单向加密算法 主要用于验证数据完整性,也是数字签名的核心算法 消息鉴别:指在接收方将原始信息进行摘要,然后与接收到的摘要信息进行对比 a.MD家族 – MD5(128位摘要信息) M ...