您的位置:首页 > 产品设计 > UI/UE

GPUImage开源框架使用教程

2015-07-17 14:01 721 查看
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: