IOS之简单滤镜详解
来源:互联网 发布:java web 线程池 编辑:程序博客网 时间:2024/05/16 05:06
//
// ViewController.m
// 滤镜练习
//
// Created by scsys on 16/3/24.
// Copyright © 2016年 scsys. All rights reserved.
//
#import "ViewController.h"
***准备工作
//第一步:了解滤镜原理 其实滤镜就是在一张图片上黏合了一张图片 就像你从窗户里面看外面
//第二步: 三个部分 CIImage图片(准备要合成的图片) CIFilter滤镜(黏合图片和滤镜) CIContext上下文(用来绘制图片)
//第三步:
command+鼠标左键点击CIFilter 进入之后上拉至128-148行 此为滤镜效果的类别 具体可看英文单词意思 随便选择一个进行如下操作
NSLog(@"%@",[CIFilter filterNamesInCategory:kCICategoryCompositeOperation]);输出如下
此为你选择的滤镜效果的名字 这里有点绕 记得这里才是滤镜效果的名字就好
然后选择这个方法 注意返回值是CIFilter 把你刚刚选择的滤镜效果的名字复制进来
NSLog(@"%@",[CIFilter filterWithName:@"CIExclusionBlendMode"].attributes);
输出结果如下
@interface ViewController ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>//两个代理方法 后面有介绍
{
//创建一个图片视图 作为全局变量
UIImageView *imageView;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
imageView = [[UIImageView alloc]initWithFrame:self.view.frame];
[self.view addSubview:imageView];
//这个按钮是用来点击进入相册的 为了选取图片
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(10, 100, 150, 80)];
[button setTitle:@"start" forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.view addSubview:button];
[button addTarget:self action:@selector(buttona) forControlEvents:UIControlEventTouchUpInside];
//这个按钮是用来点击添加滤镜效果的
UIButton *button1 = [[UIButton alloc]initWithFrame:CGRectMake(10, 200, 150, 80)];
[button1 setTitle:@"变变" forState:UIControlStateNormal];
[button1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.view addSubview:button1];
[button1 addTarget:self action:@selector(buttonaa) forControlEvents:UIControlEventTouchUpInside];
}
-(void)buttona{
//创建图片采集控制器 可以进入相册 具体不做详解 百度有
UIImagePickerController *picker = [[UIImagePickerController alloc]init];
picker.delegate = self;
//跳进相册
[self presentViewController:picker animated:YES completion:nil];
}
//代理的方法 要挂两个代理
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
UIImage *image = info[UIImagePickerControllerOriginalImage];
imageView.image = image;
//选择完图片要跳出控制器
[self dismissViewControllerAnimated:YES completion:nil];
}
-(void)buttonaa{
***正题
//1.选择要黏合的图片
CIImage *ciimage = [CIImage imageWithCGImage:imageView.image.CGImage];
//2.选择滤镜
CIFilter *filter = [CIFilter filterWithName:@"CIVortexDistortion"];
//3.把图片放入滤镜
//设置参数 参数类型上面有
上方我又截图 可以回去看
command+鼠标左键点击CIFilter 165-191行都是参数名字
[filter setValue:ciimage forKey:kCIInputImageKey];
[filter setValue:[CIVector vectorWithX:20 Y:20] forKey: kCIInputCenterKey];
//4.把和滤镜黏合好的图片接收出来
CIImage *image1 = filter.outputImage;
//创建上下文 用来绘制出成行的图片
CIContext *context = [CIContext contextWithOptions:nil];
//.exent百度英文意思
CGImageRef ref1 = [context createCGImage:image1 fromRect:image1.extent];
//把黏合后的图片显示出来
imageView.image = [UIImage imageWithCGImage:ref1];
完事
}
@end
- IOS之简单滤镜详解
- iOS 之滤镜 详解
- iOS滤镜简单demo
- ios 简单滤镜效果
- iOS 简单滤镜
- iOS GPUImage之自定义滤镜
- iOS 基于ColorMatrix制作简单滤镜
- iOS图片处理之滤镜效果
- iOS 视频添加滤镜资料之三
- Css3学习之filter(滤镜)属性详解
- ios 滤镜
- ios 滤镜
- iOS滤镜
- iOS-滤镜
- IOS滤镜
- ios滤镜
- iOS-滤镜
- ios 滤镜
- java生成二维码
- 电商干货!1000万烧出来的高点击率钻展创意图十大原则(营销&人性)
- 华为OJ——合唱队
- Dubbo学习(五):负载均衡
- UITextView详解
- IOS之简单滤镜详解
- Java实现tree
- Linux 3D 编程学习总结
- SVN 将主干的代码合并到分支上
- 更改eclipse(myeclipse) author的默认名字(注释的作者)
- Dynamic Web Module 3.0 requires Java 1.6 or newer
- 20.Android读唯一的设备号IMEI
- ios 9 statusBar style
- 监听器,过滤器,拦截器(简单印象)