Question

I have layered filters that all look great with the images I am using but if I change the Gaussian Blur parameters either higher or lower there is no visible difference in the blurring effect. What am I doing wrong ?

Here is my code :

GPUImageView *finalView;

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIImage *topLayer = [UIImage imageNamed:@"Glass.png"];
    UIImage *baseLayer = [UIImage imageNamed:@"BasePhoto.png"];

    GPUImagePicture *stillImageSourceTop = [[GPUImagePicture alloc] initWithImage:topLayer];
    GPUImagePicture *stillImageSourceBottom = [[GPUImagePicture alloc] initWithImage:baseLayer];

    GPUImageScreenBlendFilter *screenBlendFilter = [[GPUImageScreenBlendFilter alloc] init];
    GPUImageBrightnessFilter *brightnessFilter = [[GPUImageBrightnessFilter alloc] init];
    GPUImageContrastFilter *contrastFilter = [[GPUImageContrastFilter alloc] init];
    GPUImageSaturationFilter *saturationFilter = [[GPUImageSaturationFilter alloc] init];
    GPUImageColorMatrixFilter *colorMatrixFilter = [[GPUImageColorMatrixFilter alloc] init];
    GPUImageOpacityFilter *opacityFilter = [[GPUImageOpacityFilter alloc] init];
    opacityFilter.opacity = 0;

    GPUImageGaussianBlurFilter *blurFilter = [[GPUImageGaussianBlurFilter alloc]init];
    blurFilter.texelSpacingMultiplier = 4.0;
    blurFilter.blurRadiusInPixels = 200.0;
    blurFilter.blurPasses = 4;


    [stillImageSourceTop addTarget:brightnessFilter];
    [brightnessFilter addTarget:contrastFilter];
    [contrastFilter addTarget:saturationFilter];
    [saturationFilter addTarget:colorMatrixFilter];
    [colorMatrixFilter addTarget:blurFilter];
    [blurFilter addTarget:opacityFilter];

    [stillImageSourceTop processImage]; 
    [opacityFilter useNextFrameForImageCapture];

    UIImage *topLayerImage = [opacityFilter imageFromCurrentFramebuffer];
    GPUImagePicture *stillImageSourceTopWithFilters = [[GPUImagePicture alloc] initWithImage:topLayerImage];

    [stillImageSourceBottom addTarget:screenBlendFilter];
    [stillImageSourceTopWithFilters addTarget:screenBlendFilter];
    [screenBlendFilter useNextFrameForImageCapture];

    [stillImageSourceBottom processImage];

    UIImage *mergedlayeredimage = [screenBlendFilter imageFromCurrentFramebuffer];
   [finalImageView setImage:mergedlayeredimage];

}

Was it helpful?

Solution

Well, that's because most of the filters in that above don't actually do anything. The only filter you've wired up is the screenBlendFilter, where you have your source images both going into it and then you pull the one image out of it. You never actually use the blur for anything there, so of course it won't affect the output any.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top