GPUImage開源框架使用教程
阿新 • • 發佈:2019-02-03
GPUImage是個功能十分強大、又十分易用的影象處理庫。提供各種各樣的影象處理濾鏡,並且支援照相機和攝像機的實時濾鏡。GPUImage顧 名思義,是基於GPU的影象加速,所以影象處理速度十分快,並且能夠自定義影象濾鏡。支援ARC。
使用教程:
1.新增框架 QuartzCore.framework AVFoundation.framework OpenGLES.framework CoreVideo.framework CoreMedia.framework 2.Build Settings —> 搜尋 other link —> Other Linker Flags中新增 -ObjC3.開啟下載的框架檔案,framework->Source->iOS 將framework資料夾刪除,將Source資料夾拖入到專案中
#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; } }