版本記錄
| 版本號(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ù)~~
