GPUImage解析(六) —— 一個(gè)簡單的實(shí)例(一)

版本記錄

版本號 時(shí)間
V1.0 2017.09.04

前言

GPUImage是直接利用顯卡實(shí)現(xiàn)視頻或者圖像處理的技術(shù)。感興趣可以看上面幾篇文章。
1. GPUImage解析(一) —— 基本概覽(一)
2. GPUImage解析(二) —— 基本概覽(二)
3. GPUImage解析(三) —— 基本概覽(三)
4. GPUImage解析(四) —— 安裝方法及框架介紹
5. GPUImage解析(五) —— 框架中的幾個(gè)基類

功能需求

下面應(yīng)用GPUImage中的一種濾鏡,進(jìn)行簡單的濾鏡和顯示操作。


功能實(shí)現(xiàn)

下面我們就用OC進(jìn)行簡單的實(shí)現(xiàn)。

1. JJGPUImageSimpleVC.m
#import "JJGPUImageSimpleVC.h"
#import "GPUImage.h"

@interface JJGPUImageSimpleVC ()

@property (nonatomic, strong) UIImageView *imageView;

@end

@implementation JJGPUImageSimpleVC

#pragma mark - Override Base Function

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor whiteColor];
    
    self.imageView = [[UIImageView alloc] init];
    self.imageView.contentMode = UIViewContentModeScaleAspectFill;
    self.imageView.frame = self.view.frame;
    [self.view addSubview:self.imageView];
    
    [self loadImage];
}

- (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)loadImage
{
    //實(shí)例化一種濾鏡
    GPUImageSepiaFilter *imageFilter = [[GPUImageSepiaFilter alloc] init];
    self.imageView.image = [imageFilter imageByFilteringImage:[UIImage imageNamed:@"autumn"]];
}

@end

這里還要注意,在使用之前不要忘記引入頭文件。

#import "GPUImage.h"

主要的濾鏡操作都在方法- (void)loadImage里面。


功能實(shí)現(xiàn)

下面我們就看一下功能實(shí)現(xiàn)的效果圖,測試手機(jī)使用的是6s plus。GPUImageFilter就是用來接收源圖像,通過自定義的頂點(diǎn)、片元著色器來渲染新的圖像,并在繪制完成后通知響應(yīng)鏈的下一個(gè)對象。

后記

未完,待續(xù)~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容