最近在做一个3D模型换脸功能,用户用手机自拍,然后将3D人物模型的脸换成自己的。

  在这过程中,android端可以用美图秀秀的美颜库去美白,但是ios端就没有类似的东东,百度一下,会发现在github上有一个叫BeautifyFaceDemo的开源项目,可以实现实时美颜相机,可想而知实现美颜一张照片肯定没问题。然后开始研究,最后用上之后,效果还可以。

  下面记录一下调用过程:

  Step 1,从https://github.com/BradLarson/GPUImage下载GPUImage工程,从https://github.com/Guikunzhi/BeautifyFaceDemo下载BeautifyFaceDemo工程

  Step 2,新建Single View Application工程TestBeautifyFace,

      将GPUImage工程文件夹中的framework文件夹拖到TestBeautifyFace工程文件夹,

      在新工程中新建Framework文件夹,将GPUImage.xcodeproj文件拖拽添加到xcode Framework文件夹中,

      然后添加依赖:在Build Phases-Link Binary With Libraries中点+添加下面的framework:

              CoreMedia,CoreVideo,OpenGLES,AVFoundation,QuartzCore,最后将libGPUImage.a文件也加进来,不然链接时会报错……

      在Build Settings的Header Search Paths项中配置头文件搜索路径,将包含GPUImage的framework路径添加进来,我的是放在TestBeautifyFace工程文件同一级,所以是:framework/**  (**表示包含目录及所有子目录)

  Step 3, 使用GPUImage:

       为了节约时间,直接上老外的代码^_^:

 

 1 GPUImageFilter *selectedFilter;
 2      
 3     switch (buttonIndex) {
 4         case 0:
 5             selectedFilter = [[GPUImageGrayscaleFilter alloc] init];
 6             break;
 7         case 1:
 8             selectedFilter = [[GPUImageSepiaFilter alloc] init];
 9             break;
10         case 2:
11             selectedFilter = [[GPUImageSketchFilter alloc] init];
12             break;
13         case 3:
14             selectedFilter = [[GPUImagePixellateFilter alloc] init];
15             break;
16         case 4:
17             selectedFilter = [[GPUImageColorInvertFilter alloc] init];
18             break;
19         case 5:
20             selectedFilter = [[GPUImageToonFilter alloc] init];
21             break;
22         case 6:
23             selectedFilter = [[GPUImagePinchDistortionFilter alloc] init];
24             break;
25         case 7:
26             selectedFilter = [[GPUImageFilter alloc] init];
27             break;
28         default:
29             break;
30     }
31      
32     UIImage *filteredImage = [selectedFilter imageByFilteringImage:originalImage];
33     [self.selectedImageView setImage:filteredImage];
View Code

  Step 4,使用美颜滤镜美颜一张照片:

      

1     GPUImageBeautifyFilter *beautifyFilter = [[GPUImageBeautifyFilter alloc] init];
2     UIImage *filteredImage = [beautifyFilter imageByFilteringImage:selectedImage];
3     [self.selectedImageView setImage:filteredImage];
View Code

  先写到这里,继续研究GPUImage~

 

  参考:http://code.tutsplus.com/tutorials/build-a-photo-app-with-gpuimage--mobile-12223