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];

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

  • 相关阅读:
    Java Object part1
    StringBuffer StringBuilder append
    Java equal
    java Classloader
    Java NIO
    Oracle中Blob和Clob
    Java8 Lambda 表达式
    HashMap分析 + 哈希表
    android自定义控件之滚动广告条
    android自定义控件之模仿优酷菜单
  • 原文地址:https://www.cnblogs.com/yingkong1987/p/2993325.html
Copyright © 2011-2022 走看看