GPUImage开源框架使用教程

GPUImage是个功能十分强大、又十分易用的图像处理库。提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜。GPUImage顾 名思义,是基于GPU的图像加速,所以图像处理速度十分快,并且能够自定义图像滤镜。支持ARC。


https://github.com/BradLarson/GPUImage


使用教程:

1.添加框架
QuartzCore.framework
AVFoundation.framework
OpenGLES.framework
CoreVideo.framework
CoreMedia.framework

2.Build Settings —> 搜索 other link —> Other Linker Flags中添加 -ObjC


3.打开下载的框架文件,framework->Source->iOS 将framework文件夹删除,将Source文件夹拖入到项目中


4.添加pch文件

# import “GPUImage.h”



#pragma mark - 滑块触发事件

- (IBAction)slider:(UISlider *)sender {
    
    //1.取得滑块
    UISlider *slider = (UISlider *)[self.view viewWithTag:sender.tag];
    //2.取得滑块的value
    CGFloat vlaue = slider.value;
    //3.value值显示
    self.number.text = [NSString stringWithFormat:@"%f", vlaue];
    
    //4.选择滑块
    switch (slider.tag) {
            
        case 100:
        {//            亮度
            GPUImageBrightnessFilter *brightness = [[GPUImageBrightnessFilter alloc] init];//创建滤镜对象
            brightness.brightness = vlaue;//设置亮度 -1.0 to 1.0 默认 0.0
            [brightness forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [brightness useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:brightness];//渲染图片并显示
        }
            break;
            
        case 101:
        {//            曝光度
            GPUImageExposureFilter *exposure = [[GPUImageExposureFilter alloc] init];//创建滤镜对象
            exposure.exposure = vlaue;//设置亮度 -10 to 10 默认 0
            [exposure forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [exposure useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:exposure];//渲染图片并显示
        }
            break;
            
        case 102:
        {//            对比度
            GPUImageContrastFilter *contrast = [[GPUImageContrastFilter alloc] init];//创建滤镜对象
            contrast.contrast = vlaue;//设置对比度 0 to 4 默认 1
            [contrast forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [contrast useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:contrast];//渲染图片并显示
        }
            break;
           
        case 103:
        {//            饱和度
            GPUImageSaturationFilter *saturation = [[GPUImageSaturationFilter alloc] init];//创建滤镜对象
            saturation.saturation = vlaue;//设置饱和度 0 to 2 默认 1
            [saturation forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [saturation useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:saturation];//渲染图片并显示
        }
            break;
            
        case 104:
        {//            锐化
            GPUImageSharpenFilter *sharpen = [[GPUImageSharpenFilter alloc] init];//创建滤镜对象
            sharpen.sharpness = vlaue;//设置饱和度 -4 to 4 默认 0
            [sharpen forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [sharpen useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:sharpen];//渲染图片并显示
        }
            break;
            
        case 105:
        {//            形变
            GPUImageTransformFilter *transform = [[GPUImageTransformFilter alloc] init];//创建滤镜对象
            transform.transform3D = CATransform3DMakeScale(vlaue, vlaue, vlaue);//设置属性
            [transform forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [transform useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:transform];//渲染图片并显示
        }
            break;
            
        case 106:
        {//            高斯模糊
        GPUImageGaussianBlurFilter *gaussianBlur = [[GPUImageGaussianBlurFilter alloc] init];//创建滤镜对象
            gaussianBlur.texelSpacingMultiplier = vlaue;
            [gaussianBlur forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [gaussianBlur useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:gaussianBlur];//渲染图片并显示
        }
            break;
            
        case 107:
        {//            卡通效果
             GPUImageToonFilter *sketch = [[GPUImageToonFilter alloc] init];//创建滤镜对象
            sketch.quantizationLevels = 10;
            [sketch forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [sketch useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:sketch];//渲染图片并显示
        }
            break;
            
        case 108:
        {//            球形倒立效果
            GPUImageSphereRefractionFilter *glass = [[GPUImageSphereRefractionFilter alloc] init];//创建滤镜对象
            glass.radius = vlaue; //设置球 半径
            [glass forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [glass useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:glass];//渲染图片并显示
        }
            break;
            
        case 109:
        {//            怀旧效果
            GPUImageSepiaFilter *sepia = [[GPUImageSepiaFilter alloc] init];//创建滤镜对象

            [sepia forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [sepia useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:sepia];//渲染图片并显示
        }
            break;
            
        case 110:
        {//            反色效果
            GPUImageColorInvertFilter *colorInvert = [[GPUImageColorInvertFilter alloc] init];//创建滤镜对象
            [colorInvert forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [colorInvert useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:colorInvert];//渲染图片并显示
        }
            break;
            
        case 111:
        {//            色彩丢失效果
        GPUImageColorPackingFilter *colorPacking = [[GPUImageColorPackingFilter alloc] init];//创建滤镜对象
            [colorPacking forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [colorPacking useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:colorPacking];//渲染图片并显示
        }
            break;
         
        case 112:
        {//            晕影效果
            GPUImageVignetteFilter *vigette = [[GPUImageVignetteFilter alloc] init];//创建滤镜对象
            vigette.vignetteStart = 0;
            [vigette forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [vigette useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:vigette];//渲染图片并显示
        }
            break;
            
        case 113:
        {//            交叉线效果
            GPUImageCrosshatchFilter *crosshatch = [[GPUImageCrosshatchFilter alloc] init];//创建滤镜对象
            crosshatch.crossHatchSpacing = vlaue;
            [crosshatch forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [crosshatch useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:crosshatch];//渲染图片并显示
        }
            break;
        
        case 114:
        {//            哈哈镜效果
        GPUImageStretchDistortionFilter *stretch = [[GPUImageStretchDistortionFilter alloc] init];//创建滤镜对象
            stretch.center = CGPointMake(vlaue, vlaue);
            [stretch forceProcessingAtSize:self.image.size];//设置要渲染的区域
            [stretch useNextFrameForImageCapture];//捕获图片效果
            [self filterWithObject:stretch];//渲染图片并显示
        }
            break;
            
        default:
            break;
    }
}



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值