簡體   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