菜鸟教程小白 发表于 2022-12-13 06:39:15

ios - 使用 UISlider 应用 GPUImage 过滤器


                                            <p><p>我正在使用 GPUImage 滤镜创建一个简单的图像亮度、对比度和饱和度调整工具。该 View 有一个 ImageView 和每个过滤器的 3 个 slider 。起初我以为我会在每个 slider 的值发生变化时应用每个过滤器,但后来我意识到必须链接过滤器。所以我写了下面的代码。这段代码的问题是只对图像应用了亮度滤镜。</p>

<pre><code>- (IBAction)brightnessSlider:(UISlider *)sender {

    brightnessValue = sender.value;

    UIImage *inputImage = ;

    GPUImagePicture *stillImageSource = [ initWithImage:inputImage];

    GPUImageBrightnessFilter *brightnessFilter = ;
    GPUImageContrastFilter *contrastFilter = ;
    GPUImageSaturationFilter *saturationFilter = ;

    ;
    ;
    ;

    ;
    ;
    ;
    ;
    ;

    UIImage *currentFilteredVideoFrame = ;

    imageView.image = currentFilteredVideoFrame;
}

- (IBAction)contrastSlider:(UISlider *)sender
{
    contrastValue = sender.value;

    UIImage *inputImage = ;

    GPUImagePicture *stillImageSource = [ initWithImage:inputImage];

    GPUImageBrightnessFilter *brightnessFilter = ;
    GPUImageContrastFilter *contrastFilter = ;
    GPUImageSaturationFilter *saturationFilter = ;

    ;
    ;
    ;

    ;
    ;
    ;
    ;
    ;

    UIImage *currentFilteredVideoFrame = ;

    imageView.image = currentFilteredVideoFrame;
}


- (IBAction)saturationSlider:(UISlider *)sender
{
    saturationValue = sender.value;

    UIImage *inputImage = ;

    GPUImagePicture *stillImageSource = [ initWithImage:inputImage];

    GPUImageBrightnessFilter *brightnessFilter = ;
    GPUImageContrastFilter *contrastFilter = ;
    GPUImageSaturationFilter *saturationFilter = ;

    ;
    ;
    ;

    ;
    ;
    ;
    ;
    ;

    UIImage *currentFilteredVideoFrame = ;

    imageView.image = currentFilteredVideoFrame;


}
</code></pre>

<p>现在我决定以一种更简单的方式来实现整个事情,但我仍然一无所获:</p>

<pre><code>UIImage *inputImage = ;
    GPUImagePicture *stillImageSource = [ initWithImage:inputImage];

    //Set Brightness to 60
    GPUImageBrightnessFilter *brightnessFilter = ;
    ;

    //Set Contrast to 12
    GPUImageContrastFilter *contrastFilter = ;
    ;


    ;

    ;
    ;
    ;

    UIImage *outputImage1 = ;
    imageView.image = outputImage1;
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您不需要为每个 slider 更改使用相同的添加目标代码。您应该只更改所需过滤器的值并在代码中的其他位置设置所有过滤器;您最终将在其中加载图像。这将使您的代码更容易维护,并使这个问题更短。</p>

<p>现在到实际问题。查看 GPUImage github <a href="https://github.com/BradLarson/GPUImage/issues/233" rel="noreferrer noopener nofollow">issue</a> .您已按以下顺序嵌套过滤器:</p>

<p>静止图像 > 亮度 > 对比度 > 饱和度</p>

<p>然后您会从亮度过滤器中获取图像。您需要通过饱和度过滤器获得它。所以,你的链需要是这样的:</p>

<p>静止图像 > 亮度 > 对比度 > 饱和度 > 输出图像</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 UISlider 应用 GPUImage 过滤器,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/29897180/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/29897180/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 UISlider 应用 GPUImage 过滤器