繁体   English   中英

GPUImageGaussianBlurFilter似乎不适用于分层滤镜

[英]GPUImageGaussianBlurFilter doesn't seem to work with layered filters

我有分层的滤镜,这些滤镜在我使用的图像上看起来都很棒,但是如果我将Gaussian Blur参数更改为较高或较低,则模糊效果没有明显的区别。 我究竟做错了什么 ?

这是我的代码:

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

}

嗯,那是因为上面的大多数过滤器实际上没有执行任何操作。 连接的唯一过滤器是screenBlendFilter,将源图像都放入其中,然后从中拉出一个图像。 您实际上从来不会对那里的任何东西使用模糊,因此,它当然不会影响输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM