zoukankan      html  css  js  c++  java
  • GPUImage做滤镜

    IOS端滤镜开源代码比较少,基本上强大的就是GPUImage了,操作简单而且强大。
    基本功能可以实现,相机,摄像以及静态图片的滤镜

    live filter:
    调用GPUImageStillCamera 作为相机,并将相机添加到一个GPUImageView中
    _stillCamera = [[GPUImageStillCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
    切记使用小一些的尺寸initWithSessionPreset:AVCaptureSessionPreset640x480。否则会出现memory warning
    [_stillCamera addTarget:self.imageView];

    如果需要添加fiilter。就通过其中添加
    _cropFilter = [[GPUImageCropFilter alloc] initWithCropRegion:CGRectMake(0.0f, 0.0f, 1.0f
    , 0.96)];
    [_stillCamera addTarget:_cropFilter];
    [_cropFilter addTarget:self.imageView];
    如果是多个滤镜,则
    [_stillCamera addTarget:_cropFilter1];
    [_cropFilter1 addTarget:_cropFilter2];
    [_cropFilter2 addTarget:self.imageView];

    拍照后想生成图片
    [_stillCamera capturePhotoAsImageProcessedUpToFilter:lastFilter
    withCompletionHandler:^(UIImage *processed, NSError *error) ;

    lastFilter的解释为finalFilterInChain
    也就是说,需要使用最后一个addTarget进来的滤镜

    static filter:
    首先设置初始图片到GPUImagePicture
    _staticPicture=[[GPUImagePicture alloc]initWithImage:selectedImage smoothlyScaleOutput:NO];
    加filter与上面相同
    需要生成新的图片时,调用
    [_staticPicture processImage];
    [filter imageFromCurrentlyProcessedOutput];

    非常简单。附上过滤后的图

  • 相关阅读:
    左旋一个字符串和手摇反转法
    LCS
    游戏服务器学习_1
    面试题_带答案_2
    面试题_带答案
    安卓_13
    安卓_12activity
    安卓_12
    多盟_1
    安卓没删干净导致报错
  • 原文地址:https://www.cnblogs.com/yingkong1987/p/2993325.html
Copyright © 2011-2022 走看看