美文网首页
GPUImage使用心得二:图片滤镜

GPUImage使用心得二:图片滤镜

作者: 海纳百川_88 | 来源:发表于2018-12-26 16:49 被阅读0次

    主要类别

    1.GPUImagePicture(图片处理)

    2.GPUImageOutput(滤镜,分单个和多个之分;多个使用GPUImageFilterGroup)

    下面为主要处理代码

    第一:单个滤镜

    //图片处理对象,self.selectImage为要处理的image

    sourcePicture = [[GPUImagePicture alloc] initWithImage:self.selectImage         smoothlyScaleOutput:YES];

    sepiaFilter = [[GPUImageContrastFilter alloc] init];//对比度

    //

    [sourcePicture addTarget:sepiaFilter];

    [sourcePicture processImage];

    //输出图片

    UIImage *image = [sepiaGroup imageFromCurrentFramebuffer];

    //设置图片

    self.imageView.image= image;

    第二:组合滤镜(Group)

    - (void)setupDisplayFiltering;

    {

        sourcePicture = [[GPUImagePicture alloc] initWithImage:self.selectImage smoothlyScaleOutput:YES];

        sepiaGroup = [[GPUImageFilterGroup alloc]init];//数组

        [sourcePicture addTarget:sepiaGroup];

        sepiaFilter = [[GPUImageContrastFilter alloc] init];//对比度

        sepiaFilter2 = [[GPUImageSaturationFilter alloc] init];//饱和度

        sepiaFilter3 = [[GPUImageExposureFilter alloc] init];//曝光

        sepiaFilter4 = [[GPUImageSharpenFilter alloc] init];//锐化

        sepiaFilter5 = [[GPUImageRGBFilter alloc] init];//RGB

    //    [sepiaFilter forceProcessingAtSize:self.imageView.bounds.size]; // This is now needed to make the filter run at the smaller output size

    //    [sepiaFilter2 forceProcessingAtSize:self.imageView.bounds.size]; // This is now needed to make the filter run at the smaller output size

    //    [sepiaFilter3 forceProcessingAtSize:self.imageView.bounds.size]; // This is now needed to make the filter run at the smaller output size

    //    [sepiaFilter4 forceProcessingAtSize:self.imageView.bounds.size]; // This is now needed to make the filter run at the smaller output size

    //    [sepiaFilter5 forceProcessingAtSize:self.imageView.bounds.size]; // This is now needed to make the filter run at the smaller output size

    //    [sepiaFilter6 forceProcessingAtSize:self.imageView.bounds.size]; // This is now needed to make the filter run at the smaller output size

        [self addGPUImageFilter:sepiaFilter];

        [self addGPUImageFilter:sepiaFilter2];

        [self addGPUImageFilter:sepiaFilter3];

        [self addGPUImageFilter:sepiaFilter4];

        [self addGPUImageFilter:sepiaFilter5];

        [sepiaGroup useNextFrameForImageCapture];

        [sourcePicture processImage];

        UIImage *image = [sepiaGroup imageFromCurrentFramebuffer];

        NSLog(@"image----%@",image);

        self.imageView.image= image;

    }

    - (void)addGPUImageFilter:(GPUImageOutput *)filter

    {

        [sepiaGroupaddFilter:filter];

        GPUImageOutput *newTerminalFilter = filter;

        NSIntegercount =sepiaGroup.filterCount;

        if(count ==1)

        {

            sepiaGroup.initialFilters=@[newTerminalFilter];

            sepiaGroup.terminalFilter= newTerminalFilter;

        }else

        {

            GPUImageOutput<GPUImageInput> *terminalFilter    =sepiaGroup.terminalFilter;

            NSArray*initialFilters                          =sepiaGroup.initialFilters;

            [terminalFilteraddTarget:newTerminalFilter];

            sepiaGroup.initialFilters=@[initialFilters[0]];

            sepiaGroup.terminalFilter= newTerminalFilter;

        }

    }

    交流可以联系:578145120@qq.com,不使用qq,只用邮箱

    相关文章

      网友评论

          本文标题:GPUImage使用心得二:图片滤镜

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