Search code examples
iosimagegpuimage

GPUImage group filters


I am trying to implement brightness,contrast and exposure filters in a single view same as you see in iPhoto app. I have tried to put up group filter for doing the same. But it shows up a white screen instead of modified picture. Here is the code I applied.

 GPUImageFilterGroup *groupFilter = [[GPUImageFilterGroup alloc]init];
    GPUImageBrightnessFilter *brightnessFilter = [[GPUImageBrightnessFilter alloc]init];
    [brightnessFilter setBrightness:brightnessValue];
    GPUImageContrastFilter *contrastFilter = [[GPUImageContrastFilter alloc]init];
    [contrastFilter setContrast:contrastValue];
    GPUImageExposureFilter *exposureFilter =[[GPUImageExposureFilter alloc]init];
    [exposureFilter setExposure:exposureValue];
    [groupFilter addFilter:brightnessFilter];
    [groupFilter addFilter:contrastFilter];
    [groupFilter addFilter:exposureFilter];
     GPUImagePicture *stillImage= [[GPUImagePicture alloc]initWithImage:self.imageToModify];
    [stillImage addTarget:groupFilter];


    [stillImage processImage];

    previewPicture.image = [groupFilter imageFromCurrentlyProcessedOutputWithOrientation:self.imageToModify.imageOrientation];

I even tried to put each individually but still it shows up white image. Is the above code I am using correct? I have also tried using GPUImageFilterPipeline instead of GPUImageFilterGroup but still having the same issue. For the record, the image is a still image and not live feed.


Solution

  • you have missed some code statement for doing it which is as below.

       [brightnessFilter addTarget: contrastFilter];
       [contrastFilter addTarget: exposureFilter];
    
      [(GPUImageFilterGroup *) groupFilter setInitialFilters:[NSArray arrayWithObject: brightnessFilter]];
      [(GPUImageFilterGroup *) groupFilter setTerminalFilter:exposureFilter];
    

    Thanks