1. 程式人生 > >GPUImage開源框架使用教程

GPUImage開源框架使用教程

GPUImage是個功能十分強大、又十分易用的影象處理庫。提供各種各樣的影象處理濾鏡,並且支援照相機和攝像機的實時濾鏡。GPUImage顧 名思義,是基於GPU的影象加速,所以影象處理速度十分快,並且能夠自定義影象濾鏡。支援ARC。

使用教程:

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;
    }
}