版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2017.09.05 |
前言
GPUImage
是直接利用顯卡實現(xiàn)視頻或者圖像處理的技術今野。感興趣可以看上面幾篇文章葡公。
1. GPUImage解析(一) —— 基本概覽(一)
2. GPUImage解析(二) —— 基本概覽(二)
3. GPUImage解析(三) —— 基本概覽(三)
4. GPUImage解析(四) —— 安裝方法及框架介紹
5. GPUImage解析(五) —— 框架中的幾個基類
6. GPUImage解析(六) —— 一個簡單的實例(一)
7. GPUImage解析(七) —— 一個簡單的實例結合GPUImageVideoCamera(二)
8. GPUImage解析(八) —— 一個簡單的實例之多濾鏡視頻采集存儲(三)
功能要求
實現(xiàn)GPUImageTiltShiftFilter
濾鏡的處理效果。
功能實現(xiàn)
下面我們先看一下實現(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
{
//實例化GPUImageView
GPUImageView *imageView = [[GPUImageView alloc] initWithFrame:self.view.frame];
imageView.fillMode = kGPUImageFillModePreserveAspectRatioAndFill;
[self.view addSubview:imageView];
self.imageView = imageView;
//實例化GPUImagePicture
self.imagePicture = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"picture"]];
//實例化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相關的數(shù)據(jù)顯示
GLint size = [GPUImageContext maximumTextureSizeForThisDevice];
GLint unit = [GPUImageContext maximumTextureUnitsForThisDevice];
GLint vector = [GPUImageContext maximumVaryingVectorsForThisDevice];
NSLog(@"%d %d %d", size, unit, vector);
}
@end
效果驗證
下面我們看一下效果圖和gif圖催什。
這個效果有沒有很炫很好玩呢~~
后記
未完,待續(xù)~~