美颜拍照

作者: 倚楼听风雨wing | 来源:发表于2016-05-23 18:39 被阅读408次

    1.废话前言[可略过]

    前两天和一个做IOS的朋友在一起聊天,他现在做人脸识别.他告诉我说他们公司的同事说这个图片太丑了,每次到公司看到自己的照片整个人心情都不好了,手动撸一个滤镜吧.听完朋友的话,突然想到现在好多的美颜相机什么的,竟然可以把人拍得这么好看,加上自己以前做聊天的时候也有拍照录像,可是当时没有做滤镜处理.所以我想一窥滤镜的究竟,于是有了此文

    2.GPUImage集成

    虽说是要做滤镜处理,可我还是没有那么丧心病狂真是全部自己写啊,我到github上找到了一个很好的滤镜框架GPUImage
    地址:https://github.com/wangyansnow/GPUImage
    由于使用Cocoapods的的集成方式,过于简单,github上也有,这里略过,我主要讲怎么手动集成
    1.点击我的Demo地址:https://github.com/wangyansnow/WYImageFilter 下载之
    2.把GPUImage整个文件夹拖到项目中
    3.添加项目依赖的库

    • CoreMedia
    • CoreVideo
    • OpenGLES
    • AVFoundation
    • QuartzCore

    4.使用的时候导入#import "GPUImage.h"

    3.简单用法

    #import "GPUImage.h"
    #import "ViewController.h"
    
    #define VIDEO_RECT CGRectMake(40, 64, 240, 320)
    
    @implementation ViewController
    {
        GPUImageStillCamera *_stillCamera;  /// 照相机
        GPUImageView        *_frameView;    /// 图像框
        GPUImageBeautifyFilter *_beautifyFilter; /// 美颜滤镜
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        [self beautifyVideo];
        
    }
    
    - (void)beautifyVideo {
        _stillCamera = [[GPUImageStillCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionFront];
        _stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
        
        _beautifyFilter = [GPUImageBeautifyFilter new];
        _frameView      = [[GPUImageView alloc] initWithFrame:VIDEO_RECT];
        
        [_beautifyFilter addTarget:_frameView];
        [_stillCamera addTarget:_beautifyFilter];
        
        [self.view addSubview:_frameView];
        [_stillCamera startCameraCapture];
    }
    
    - (IBAction)takePhotoBtnClick {
        [_stillCamera capturePhotoAsPNGProcessedUpToFilter:_beautifyFilter withCompletionHandler:^(NSData *processedPNG, NSError *error) {
            if (error) NSLog(@"error = %@", error);
            
            UIImage *image = [UIImage imageWithData:processedPNG];
            UIImageView *imageView = [[UIImageView alloc] initWithFrame:VIDEO_RECT];
            imageView.image = image;
            [self.view addSubview:imageView];
            
            NSLog(@"image = %@", image);
            NSLog(@"currentThread = %@", [NSThread currentThread]);
        }];
    }
    @end
    
    

    4.效果图

    滤镜效果图.jpg

    相关文章

      网友评论

        本文标题:美颜拍照

        本文链接:https://www.haomeiwen.com/subject/ztatlttx.html