-
处理头像的框架
- 使用
Core Graphics
库 (系统) - 使用
Core Image
库 (系统) - 使用
GPUImage
库 (第三方)
- 使用
-
github地址 : https://github.com/BradLarson/GPUImage
- CocoaPods集成 :
pod 'GPUImage'
图像处理原理
- 每个像素点都有亮度值/像素值,即RGB的色值平均值
- 图像处理的基础是处理像素值
滤镜基本使用
获取原图
- (void)loadOriginImage { NSString *path = [[NSBundle mainBundle] pathForResource:@"filter.jpg" ofType:nil]; UIImage *originImage = [UIImage imageWithContentsOfFile:path]; // 记录原始图片 _originImage = originImage; self.imgView.image = originImage; }
滤镜使用步骤
- 获取原始图片
GPUImagePicture
- 创建滤镜
GPUImageSepiaFilter (以怀旧滤镜为例)
- 向图片添加滤镜
[Picture addTarget:Filter];
- 开始处理/渲染图片
[Filter useNextFrameForImageCapture];[Picture processImage];
- 输出处理后的图片
UIImage *outputImage = [Filter imageFromCurrentFramebuffer];
- 展示滤镜处理后的图片
imageView.image = outputImage;
怀旧滤镜
- (IBAction)huaijiuImage:(id)sender { // 1.获取原始图片,指定为GPUImagePicture GPUImagePicture *GPUPicture = [[GPUImagePicture alloc] initWithImage:_originImage]; // 2.创建`怀旧`滤镜 GPUImageSepiaFilter *sepiaFilter = [GPUImageSepiaFilter new]; // 3.向图片添加滤镜 [GPUPicture addTarget:sepiaFilter]; // 4.开始处理/渲染图片 [sepiaFilter useNextFrameForImageCapture]; [GPUPicture processImage]; // 5.输出处理后的图片 UIImage *outputImage = [sepiaFilter imageFromCurrentFramebuffer]; // 6.展示滤镜处理后的图片 self.imgView.image = outputImage; /* 其中2~6步,可以替换成以下代码(简写) */ // self.imgView.image = [sepiaFilter imageByFilteringImage:_originImage]; }
高斯模糊滤镜
- (IBAction)gaussianBlurImage:(id)sender { // 1.获取原始图片,指定为GPUImagePicture GPUImagePicture *GPUPicture = [[GPUImagePicture alloc] initWithImage:_originImage]; // 2.创建`高斯模糊`滤镜 GPUImageGaussianBlurFilter *gaussianBlurFilter = [GPUImageGaussianBlurFilter new]; // 3.向图片添加滤镜 [GPUPicture addTarget:gaussianBlurFilter]; // 4.开始处理/渲染图片 [gaussianBlurFilter useNextFrameForImageCapture]; [GPUPicture processImage]; // 5.输出处理后的图片 UIImage *outputImage = [gaussianBlurFilter imageFromCurrentFramebuffer]; // 6.展示滤镜处理后的图片 self.imgView.image = outputImage; /* 其中2~6步,可以替换成以下代码(简写) */ // self.imgView.image = [gaussianBlurFilter imageByFilteringImage:_originImage]; }
素描滤镜
- (IBAction)sumioaImage:(id)sender { // 1.获取原始图片,指定为GPUImagePicture GPUImagePicture *GPUPicture = [[GPUImagePicture alloc] initWithImage:_originImage]; // 2.创建`素描`滤镜 GPUImageSketchFilter *sketchFilter = [GPUImageSketchFilter new]; // 3.向图片添加滤镜 [GPUPicture addTarget:sketchFilter]; // 4.开始处理/渲染图片 [sketchFilter useNextFrameForImageCapture]; [GPUPicture processImage]; // 5.输出滤镜处理后的图片 UIImage *outputImage = [sketchFilter imageFromCurrentFramebuffer]; // 6.展示滤镜处理后的图片 self.imgView.image = outputImage; /* 其中2~6步,可以替换成以下代码(简写) */ // self.imgView.image = [sketchFilter imageByFilteringImage:_originImage]; }
GPUImage
最新推荐文章于 2024-08-08 08:24:38 发布