滤镜CIFilter简单处理(模糊效果,旧色调处理)

简单创建CIFilter  没有专业处理, 仅能达到简单的模糊效果,效果如图

(1)原图

(2)旧色调处理效果

(3)模糊处理

简单的代码结果如下

//

//  ViewController.m

//  滤镜

// 本文查看地址

//  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 {

[super
viewDidLoad];

UILabel * label = [[UILabel
alloc] initWithFrame:CGRectMake(20,
30, 280,
20)];

label.backgroundColor = [UIColor
cyanColor];

label.text =
@"先选中按钮,再拖动滑块即可达到想要的效果";

label.numberOfLines =
0;

label.font = [UIFont
systemFontOfSize:14.0];

[self.view
addSubview:label];

_slider = [[UISlider
alloc] initWithFrame:CGRectMake(50,
50,
200, 40)];

_slider.maximumValue =
1.0;

_slider.minimumValue =
0;

_slider.continuous =
YES;

[_slider
addTarget:self
action:@selector(valueChange)
forControlEvents:UIControlEventValueChanged];

[self.view
addSubview:_slider];

_segmentControl = [[UISegmentedControl
alloc] initWithFrame:CGRectMake(100,
80,
120, 40)];

//    _segmentControl.segmentedControlStyle = UISegmentedControlStyleBar;

[_segmentControl
insertSegmentWithTitle:@"旧色调"
atIndex:0
animated:YES];

[_segmentControl
insertSegmentWithTitle:@"模糊设置"
atIndex:1
animated:YES];

[_segmentControl
addTarget:self
action:@selector(ButtonAction)
forControlEvents:UIControlEventValueChanged];

[self.view
addSubview:_segmentControl];

_image = [UIImage
imageNamed:@"朝霞.jpg"];

_imageView = [[UIImageView
alloc]
initWithFrame:CGRectMake(50,
150,
_image.size.width,
_image.size.height)];

[_imageView
setImage:_image];

[self.view
addSubview:_imageView];

}

-(void)ButtonAction

{

switch (_segmentControl.selectedSegmentIndex) {

case 0:

{

self.type =
SepiaTone;//旧色调

}

break;

default:

{

self.type =
GaussianBlur; //模糊设置

}

break;

}

}

-(void)valueChange

{

switch (self.type) {

case SepiaTone:

{

//旧色调

[self
filterSepiaTone];

}

break;

default:

{

//模糊设置

[self
filterGaussianBlur];

}

break;

}

}

//旧色调处理

-(void)filterSepiaTone

{

//创建CIContext对象(默认值,传入nil)

CIContext * context = [CIContext
contextWithOptions:nil];

//获取图片

CIImage * cimage = [CIImage
imageWithCGImage:[_image
CGImage]];

//创建CIFilter

CIFilter * sepiaTone = [CIFilter
filterWithName:@"CISepiaTone"];

//设置滤镜输入参数

[sepiaTone
setValue:cimage forKey:@"inputImage"];

//获取滑块的Value,设置色调强度

[sepiaTone setValue:[NSNumber
numberWithFloat:[_slider
value]] forKey:@"inputIntensity"];

//创建处理后的图片

CIImage * resultImage = [sepiaTone
valueForKey:@"outputImage"];

CGImageRef imageRef = [context
createCGImage:resultImage fromRect:CGRectMake(0,
0, self.image.size.width,
self.image.size.height)];

UIImage * image = [[UIImage
alloc] initWithCGImage:imageRef];

[_imageView
setImage:image];

CFRelease(imageRef);

}

//模糊设置处理

-(void)filterGaussianBlur

{

//创建CIContext对象

CIContext * context = [CIContext
contextWithOptions:nil];

//获取图片

CIImage * image = [CIImage
imageWithCGImage:[_image
CGImage]];

//创建CIFilter

CIFilter * gaussianBlur = [CIFilter
filterWithName:@"CIGaussianBlur"];

//设置滤镜输入参数

[gaussianBlur
setValue:image forKey:@"inputImage"];

//设置模糊参数

[gaussianBlur
setValue:[NSNumber
numberWithFloat:_slider.value*10]
forKey:@"inputRadius"];

//得到处理后的图片

CIImage* resultImage = [gaussianBlur
valueForKey:@"outputImage"];

CGImageRef imageRef = [context
createCGImage:resultImage fromRect:CGRectMake(0,
0, self.image.size.width,
self.image.size.height)];

UIImage * imge = [[UIImage
alloc] initWithCGImage:imageRef];

[_imageView 
setImage:imge];

CFRelease(imageRef);

}

@end

时间: 2024-08-29 08:54:22

滤镜CIFilter简单处理(模糊效果,旧色调处理)的相关文章

iOS通过CIFilter对图像进行滤镜处理

在iOS5.0之后,苹果公司提供了可以对图像进行处理的CoreImage框架. 其中里面有一个CIFilter的滤镜,里面提供了非常强大的滤镜功能.本篇只是说其中部分的方法和使用.其他的功能还是去看下苹果的官方文档更为全面一些.同时,本文参考了该篇博客http://www.cnblogs.com/YouXianMing/p/3719056.html.这是主要的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用

基于iOS SDK 8.0以及Xcode 6 Beta 6. Core Image是一个很强大的框架.它可以让你简单地应用各种滤镜来处理图像,比如修改鲜艳程度, 色泽, 或者曝光. 它利用GPU(或者CPU)来非常快速.甚至实时地处理图像数据和视频的帧.并且隐藏了底层图形处理的所有细节,通过提供的API就能简单的使用了,无须关心OpenGL或者OpenGL ES是如何充分利用GPU的能力的,也不需要你知道GCD在其中发挥了怎样的作用,Core Image处理了全部的细节. Core Image框

iOS8 Core Image In Swift:更复杂的滤镜

iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用 上面那篇文章主要是Core Image的基础,只是为了说明CIImage.CIFilter.CIContext,以及基础滤镜的简单使用.在上一篇中几乎没有对滤镜进行更复杂的操作,都是直接把inputImage扔给CIFilter而已,而Core Image实际上还能对滤镜进行更加细粒度的控制,我们在新的工程中对其进行探索.为此,我重新建立了一个空的workspace,并把之前所使用的工程添加到这个workspace

iOS开发系列--绘图与滤镜全面解析

概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图形绘图框架进行介绍:Quartz 2D绘制2D图形和Core Image中强大的滤镜功能. Quartz 2D 基本图形绘制 视图刷新 其他图形上下文 Core Image Quartz 2D 在iOS中常用的绘图框架就是Quartz 2D,Quartz 2D是Core Graphics框架的一部分,是一个强大的二维图像绘制引擎.Quartz 2D在UI

iOS开发 滤镜的使用

iOS开发之滤镜的使用技巧(CoreImage) 一.滤镜的内容和效果是比较多并且复杂的 ,学习滤镜需要技巧 如下: 两个输出语句解决滤镜的属性选择问题: 1.查询效果分类中包含什么效果按住command 点击CIFilter 进入接口文件 找到第128行-148行全部都是 效果分类 2.选择其中某一个分类拷贝NSLog -> [CIFilter filterNamesInCategory:刚才拷贝的分类]; -> 打印出来的 是这个分类包含的所有效果 -> 拷贝选择其中的某一个效果 3

CoreImage 可以用滤镜来处理图片,比如修改饱和度,亮度,对比度等

// //  ViewController.m //  UI-CoreImage // //  Created by Bruce on 15/5/22. //  Copyright (c) 2015年 Bruce. All rights reserved. // /*  CoreImage 可以用滤镜来处理图片,比如修改饱和度,亮度,对比度等  它利用GPU(或者CPU,取决于客户)来非常快速.甚至实时地处理图像数据和视频的帧.多个Core Image滤镜可以叠加在一起,从而可以一次性地产生多重

绘图与滤镜全面解析

iOS开发系列--打造自己的“美图秀秀” --绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz 2D绘制2D图形和Core Image中强大的滤镜功能. Quartz 2D 基本图形绘制 视图刷新 其他图形上下文 Core Image Quartz 2D 在iOS中常用的绘图框架就是Quartz 2D,Quartz 2D是Core Graphics框

iOS 图片背景模糊效果

iOS 图片背景模糊效果 1.使用CoreImage中的模糊滤镜 原始效果图如下: CoreImage的实现: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UIImage * image = [UIImage imageNamed:@"icon"]; /*..CoreImage中的模糊效果滤镜..*/

iOS开发之滤镜的使用技巧(CoreImage)

一.滤镜的内容和效果是比较多并且复杂的 ,学习滤镜需要技巧 如下: 两个输出语句解决滤镜的属性选择问题: 1.查询效果分类中包含什么效果按住command 点击CIFilter 进入接口文件 找到第128行-148行全部都是 效果分类 2.选择其中某一个分类拷贝NSLog -> [CIFilter filterNamesInCategory:刚才拷贝的分类]; -> 打印出来的 是这个分类包含的所有效果 -> 拷贝选择其中的某一个效果 3.查询使用的效果中可以设置什么属性(KVC) at