gpt4 book ai didi

objective-c - 在图像上应用多个 CIFilter

转载 作者:行者123 更新时间:2023-12-03 17:01:04 24 4
gpt4 key购买 nike

我在图像上添加多个 CIFilter 时遇到问题,例如当我添加亮度滤镜然后尝试添加对比度图像时,图像将变为原始图像(丢失亮度滤镜),然后添加对比度滤镜。

- (IBAction)brightnessSlider:(NSSlider*)sender {
ViewController *controller = (ViewController*)[NSApplication sharedApplication].keyWindow.contentViewController;
CIFilter *brightness = [CIFilter filterWithName:@"CIColorControls" keysAndValues: kCIInputImageKey, originalCIImage, @"inputBrightness", [NSNumber numberWithFloat:[sender floatValue]], nil];
controller.imageView.image = [self fromCIImageToNSImage:[brightness outputImage]];
}

- (IBAction)contrastSlider:(id)sender {
ViewController *controller = (ViewController*)[NSApplication sharedApplication].keyWindow.contentViewController;
CIFilter *contrast = [CIFilter filterWithName:@"CIColorControls" keysAndValues: kCIInputImageKey, originalCIImage, @"inputContrast", [NSNumber numberWithFloat:[sender floatValue]], nil];
controller.imageView.image = [self fromCIImageToNSImage:[contrast outputImage]];
}

如果我在添加亮度和对比度(对更改的图像应用滤镜)后使用 originalCIImage = [CIFilter outputImage]; (CIFilter = 亮度/对比度),则图像将完全变成黑色/灰色/白色.

如何防止图像变回原始图像并同时应用多个滤镜?

我已阅读这篇文章的答案link of the post但对原始图像应用滤镜只会重置图像,因为它应该......

最佳答案

如果您单击第一个按钮,您的代码将向原始图像应用一个过滤器,如果您单击另一个按钮,则向原始图像应用不同的过滤器。

如果您想应用 2 个过滤器,则需要编写代码来获取原始图像,将其输入第一个过滤器的输入,设置其他参数,然后将输出获取到另一个 CIImage 中。

然后您需要将第一个过滤器的输出作为第二个过滤器的输入,设置这些参数等。

起泡沫,冲洗,根据需要重复多次过滤器。

请参阅此链接以获取 Swift 中的工作示例代码:https://www.objc.io/issues/21-camera-and-photos/core-image-intro/

关于objective-c - 在图像上应用多个 CIFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53110550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com