滤镜CIFilter简单处理(模糊效果,旧色调处理)
简单创建CIFilter 没有专业处理, 仅能达到简单的模糊效果,效果如图
(1)原图
(2)旧色调处理效果
(3)模糊处理
简单的代码结果如下
//
// ViewController.m
// 滤镜
// 本文查看博客地址http://blog.csdn.net/u010670117
// Created by yangxiuying on 15/1/21.
// Copyright (c) 2015年 lanjiying. All rights reserved.
//
#import "ViewController.h"
typedef enum
{
///旧色调
SepiaTone =0,
///模糊设置
GaussianBlur,
}Stype;
@interface ViewController ()
@property(nonatomic,retain)UISlider * slider;
@property(nonatomic,retain)UISegmentedControl * segmentControl;
@property(nonatomic,assign)Stype type;
@property(nonatomic,retain)UIImageView * imgView;
@property(nonatomic,retain)UIImage * image;
@property(nonatomic,retain)UIImageView * imageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
UILabel * label = [[UILabelalloc]initWithFrame:CGRectMake(20,30,280, 20)];
label.backgroundColor = [UIColorcyanColor];
label.text =@"先选中按钮,再拖动滑块即可达到想要的效果";
label.numberOfLines =0;
label.font = [UIFontsystemFontOfSize:14.0];
[self.viewaddSubview:label];
_slider = [[UISlideralloc]initWithFrame:CGRectMake(50,50,200, 40)];
_slider.maximumValue =1.0;
_slider.minimumValue =0;
_slider.continuous =YES;
[_slideraddTarget:selfaction:@selector(valueChange)forControlEvents:UIControlEventValueChanged];
[self.viewaddSubview:_slider];
_segmentControl = [[UISegmentedControlalloc]initWithFrame:CGRectMake(100,80,120, 40)];
// _segmentControl.segmentedControlStyle = UISegmentedControlStyleBar;
[_segmentControlinsertSegmentWithTitle:@"旧色调"atIndex:0animated:YES];
[_segmentControlinsertSegmentWithTitle:@"模糊设置"atIndex:1animated:YES];
[_segmentControladdTarget:selfaction:@selector(ButtonAction)forControlEvents:UIControlEventValueChanged];
[self.viewaddSubview:_segmentControl];
_image = [UIImageimageNamed:@"朝霞.jpg"];
_imageView = [[UIImageViewalloc]initWithFrame:CGRectMake(50,150,_image.size.width,_image.size.height)];
[_imageView setImage:_image];
[self.viewaddSubview:_imageView];
}
-(void)ButtonAction
{
switch (_segmentControl.selectedSegmentIndex) {
case0:
{
self.type =SepiaTone;//旧色调
}
break;
default:
{
self.type =GaussianBlur;//模糊设置
}
break;
}
}
-(void)valueChange
{
switch (self.type) {
caseSepiaTone:
{
//旧色调
[selffilterSepiaTone];
}
break;
default:
{
//模糊设置
[selffilterGaussianBlur];
}
break;
}
}
//旧色调处理
-(void)filterSepiaTone
{
//创建CIContext对象(默认值,传入nil)
CIContext * context = [CIContextcontextWithOptions:nil];
//获取图片
CIImage * cimage = [CIImageimageWithCGImage:[_imageCGImage]];
//创建CIFilter
CIFilter * sepiaTone = [CIFilterfilterWithName:@"CISepiaTone"];
//设置滤镜输入参数
[sepiaTonesetValue:cimageforKey:@"inputImage"];
//获取滑块的Value,设置色调强度
[sepiaTone setValue:[NSNumbernumberWithFloat:[_slidervalue]]forKey:@"inputIntensity"];
//创建处理后的图片
CIImage * resultImage = [sepiaTonevalueForKey:@"outputImage"];
CGImageRef imageRef = [contextcreateCGImage:resultImage fromRect:CGRectMake(0,0,self.image.size.width,self.image.size.height)];
UIImage * image = [[UIImagealloc]initWithCGImage:imageRef];
[_imageViewsetImage:image];
CFRelease(imageRef);
}
//模糊设置处理
-(void)filterGaussianBlur
{
//创建CIContext对象
CIContext * context = [CIContextcontextWithOptions:nil];
//获取图片
CIImage * image = [CIImageimageWithCGImage:[_imageCGImage]];
//创建CIFilter
CIFilter * gaussianBlur = [CIFilterfilterWithName:@"CIGaussianBlur"];
//设置滤镜输入参数
[gaussianBlursetValue:imageforKey:@"inputImage"];
//设置模糊参数
[gaussianBlursetValue:[NSNumbernumberWithFloat:_slider.value*10]forKey:@"inputRadius"];
//得到处理后的图片
CIImage* resultImage = [gaussianBlurvalueForKey:@"outputImage"];
CGImageRef imageRef = [contextcreateCGImage:resultImage fromRect:CGRectMake(0,0,self.image.size.width,self.image.size.height)];
UIImage * imge = [[UIImagealloc]initWithCGImage:imageRef];
[_imageView setImage:imge];
CFRelease(imageRef);
}
@end
滤镜CIFilter简单处理(模糊效果,旧色调处理)相关推荐
- 关于FFMPEG中的filter滤镜的简单介绍
滤镜的作用主要是对原始的音视频数据进行处理以实现各种各样的效果.比如叠加水印,翻转缩放视频等. 下图表示的正常转码流程,滤镜在解码和编码中间,虚线表示可有可无. 使用命令查看ffmpeg支持的滤镜 f ...
- html 页面模糊效果,前端 - 页面滤镜成效及高斯模糊效果
原文链接: https://blog.csdn.net/MR_LP/article/details/65443047 0.前言 注意: 若文章中发现图片无法加载,请移步作者其他博客. * 简书 * 掘 ...
- 4.10 使用照片滤镜命令修改图像色温和色调 [原创Ps教程]
原文:http://coolketang.com/staticPhotoshop/5a98d43c128fe1189bd95157.html 1. 本节课程将为您演示,如何使用[照片滤镜]命令,调整图 ...
- 超级简单!Android旧手机也能搭建http服务器ksweb
最近,我特别想组NAS文件服务器,玩着玩着就找到了一个用Android旧手机搭建web服务器的方法.我本身也用着某云搭建自己的个人网站,找到这个方法,这不就省下了开支. 闲话短说,我用的是一台红米手机 ...
- ae教程 (六)人物滤镜 (二)清新粉色调
示例2:清新粉色调 这里我以图片作为示例,但其同样可以应用视频 新建合成,拖入素材,复制该图层,选中顶层图层 添加效果 通道 通道合成器 参数如下 添加 颜色平衡(HLS),降低饱和度至-10 ...
- iOS开发的经典博客和文章汇总
官方文档 马上着手开发 iOS 应用程序(官方) https://developer.apple.com/library/ios/referencelibrary/GettingStarted/Roa ...
- iOS开发的经典博客和文章汇总【原创】
官方文档 苹果官方demo https://developer.apple.com/library/ios/recipes/xcode_help-IB_auto_layout/chapters/Und ...
- IOS开发之滤镜 CIImage、CIFilter
滤镜这个词也许大家会耳生,特别是男生,不是歧视哦,只是你不经常用而已,那么肯定就有人说,我是女生怎么了,我也没有听过这个词啊,是不是过滤代码的?(你真是想多了-3-!) 但是你会对一下的几个词比较耳熟 ...
- 超简单Shader 实现模糊效果
今天分享一个超简单实现模糊效果的方法,先上图: 核心代码就这句: 注意要在3.0以上的版本才能使用 在采样后做偏移采样再叠加,效果与下面的代码类似: float4 frag(v2f o):SV_TAR ...
最新文章
- 阿里云MVP闪亮云栖大会,技术干货持续更新中
- linux文件系统体系结构 和 虚拟文件系统(VFS)
- 【转载】solr教程,值得刚接触搜索开发人员一看
- nssl1143,jzoj3493-三角形【排序,数学,几何】
- Golang实践录:反射reflect的一些研究及代码汇总
- 显示器与服务器连接线叫什么,连接显示器和主机的线叫什么
- matlab有限域多项式除法_域上的多项式环(3) - 多项式同余理论
- 语音信号处理-概念(二):幅度谱(短时傅里叶变换谱/STFT spectrum)、梅尔谱(Mel spectrum)【语音的深度学习主要用幅度谱、梅尔谱】【用librosa或torchaudio提取】
- Bzoj 3654 图样图森波 题解
- python-26-字典:当索引不好用时
- 列出所有的电影ID,名字和销售总额(以百万美元为单位计算)
- Crossbar率先发难—欲彻底埋葬英特尔的3D XPoint技术
- 高德地图广告投放的优势、效果!
- ViewPager+Fragment实现页卡切换
- 【校招Verilog快速入门】基础语法篇:VL1、四选一多路器
- 上周工作总结及本周工作安排
- win7系统补丁服务器,win7怎么批量卸载系统更新补丁KB? win7快速删除系统补丁的技巧...
- zenmap使用教程
- java如何实现添加尖括号_(尖括号)在Java中意味着什么?
- 一步一步教你用CSS画爱心