-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathViewController.m
124 lines (94 loc) · 4.19 KB
/
ViewController.m
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
//
// ViewController.m
// CoreImageDemo
//
// Created by Lee on 1/19/15.
// Copyright (c) 2015 Scau. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView1;
@property (weak, nonatomic) IBOutlet UIImageView *imageView2;
@property (weak, nonatomic) IBOutlet UIImageView *imageView3;
@property (weak, nonatomic) IBOutlet UIImageView *imageView4;
@property (weak, nonatomic) IBOutlet UIImageView *imageView5;
@property (weak, nonatomic) IBOutlet UIImageView *imageView6;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIImage *originalImage = [UIImage imageNamed:@"clothes"];
self.imageView1.image = originalImage;
self.imageView2.image = [self blurImage:originalImage];
self.imageView3.image = [self tintImage:originalImage withRed:100 green:100 blue:100];
self.imageView4.image = [self invertImageColor:originalImage];
self.imageView5.image = [self imageEffectMono:originalImage];
self.imageView6.image = [self distortImage:originalImage];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (UIImage *)blurImage:(UIImage *)inputImage
{
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *image = [CIImage imageWithCGImage:inputImage.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
[filter setValue:image forKey:kCIInputImageKey];
[filter setValue:@(2) forKey:kCIInputRadiusKey];
CIImage *result = [filter outputImage];
CGRect rect = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:rect];
return [UIImage imageWithCGImage:cgImage];
}
- (UIImage *)tintImage:(UIImage *)inputImage withRed:(CGFloat)r green:(CGFloat)g blue:(CGFloat)b
{
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *image = [CIImage imageWithCGImage:inputImage.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIColorMatrix"];
[filter setValue:image forKey:kCIInputImageKey];
CIVector *rVector = [CIVector vectorWithX:r/255 Y:0 Z:0 W:0];
CIVector *gVector = [CIVector vectorWithX:0 Y:g/255 Z:0 W:0];
CIVector *bVector = [CIVector vectorWithX:0 Y:0 Z:b/255 W:0];
[filter setValue:rVector forKey:@"inputRVector"];
[filter setValue:gVector forKey:@"inputGVector"];
[filter setValue:bVector forKey:@"inputBVector"];
CIImage *result = [filter outputImage];
CGRect rect = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:rect];
return [UIImage imageWithCGImage:cgImage];
}
- (UIImage *)invertImageColor:(UIImage *)inputImage
{
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *image = [CIImage imageWithCGImage:inputImage.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIColorInvert"];
[filter setValue:image forKey:kCIInputImageKey];
CIImage *result = [filter outputImage];
CGRect rect = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:rect];
return [UIImage imageWithCGImage:cgImage];
}
- (UIImage *)imageEffectMono:(UIImage *)inputImage
{
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *image = [CIImage imageWithCGImage:inputImage.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIPhotoEffectMono"];
[filter setValue:image forKey:kCIInputImageKey];
CIImage *result = [filter outputImage];
CGRect rect = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:rect];
return [UIImage imageWithCGImage:cgImage];
}
- (UIImage *)distortImage:(UIImage *)inputImage
{
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *image = [CIImage imageWithCGImage:inputImage.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIBumpDistortion"];
[filter setValue:image forKey:kCIInputImageKey];
CIImage *result = [filter outputImage];
CGRect rect = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:rect];
return [UIImage imageWithCGImage:cgImage];
}
@end