版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2017.09.05 |
前言
GPUImage
是直接利用顯卡實(shí)現(xiàn)視頻或者圖像處理的技術(shù)。感興趣可以看上面幾篇文章。
1. GPUImage解析(一) —— 基本概覽(一)
2. GPUImage解析(二) —— 基本概覽(二)
3. GPUImage解析(三) —— 基本概覽(三)
4. GPUImage解析(四) —— 安裝方法及框架介紹
5. GPUImage解析(五) —— 框架中的幾個(gè)基類
6. GPUImage解析(六) —— 一個(gè)簡單的實(shí)例(一)
7. GPUImage解析(七) —— 一個(gè)簡單的實(shí)例結(jié)合GPUImageVideoCamera(二)
8. GPUImage解析(八) —— 一個(gè)簡單的實(shí)例之多濾鏡視頻采集存儲(chǔ)(三)
功能要求
實(shí)現(xiàn)GPUImageTiltShiftFilter
濾鏡的處理效果。
功能實(shí)現(xiàn)
下面我們先看一下實(shí)現(xiàn)代碼。
1. JJGPUImageTiltShiftVC.h
#import <UIKit/UIKit.h>
@interface JJGPUImageTiltShiftVC : UIViewController
@end
2. JJGPUImageTiltShiftVC.m
#import "JJGPUImageTiltShiftVC.h"
#import "GPUImage.h"
@interface JJGPUImageTiltShiftVC ()
@property (nonatomic, strong) GPUImagePicture *imagePicture;
@property (nonatomic, strong) GPUImageTiltShiftFilter *tiltShiftFilter;
@property (nonatomic, strong) GPUImageView *imageView;
@end
@implementation JJGPUImageTiltShiftVC
#pragma mark - Override Base Function
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
[self loadTiltShiftEffect];
}
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[super touchesMoved:touches withEvent:event];
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.imageView];
float rate = point.y / self.imageView.frame.size.height;
[self.tiltShiftFilter setTopFocusLevel:rate - 0.1];
[self.tiltShiftFilter setBottomFocusLevel:rate + 0.1];
[self.imagePicture processImage];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.navigationController.navigationBarHidden = YES;
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
self.navigationController.navigationBarHidden = NO;
}
#pragma mark - Object Private Function
- (void)loadTiltShiftEffect
{
//實(shí)例化GPUImageView
GPUImageView *imageView = [[GPUImageView alloc] initWithFrame:self.view.frame];
imageView.fillMode = kGPUImageFillModePreserveAspectRatioAndFill;
[self.view addSubview:imageView];
self.imageView = imageView;
//實(shí)例化GPUImagePicture
self.imagePicture = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"picture"]];
//實(shí)例化GPUImageTiltShiftFilter - 模擬傾斜移位濾鏡效果
self.tiltShiftFilter = [[GPUImageTiltShiftFilter alloc] init];
self.tiltShiftFilter.blurRadiusInPixels = 40.0;
[self.tiltShiftFilter forceProcessingAtSize:imageView.sizeInPixels];
//add target
[self.imagePicture addTarget:self.tiltShiftFilter];
[self.tiltShiftFilter addTarget:imageView];
[self.imagePicture processImage];
//GPUImageContext相關(guān)的數(shù)據(jù)顯示
GLint size = [GPUImageContext maximumTextureSizeForThisDevice];
GLint unit = [GPUImageContext maximumTextureUnitsForThisDevice];
GLint vector = [GPUImageContext maximumVaryingVectorsForThisDevice];
NSLog(@"%d %d %d", size, unit, vector);
}
@end
效果驗(yàn)證
下面我們看一下效果圖和gif圖。
這個(gè)效果有沒有很炫很好玩呢~~
后記
未完,待續(xù)~~