gpt4 book ai didi

ios - 一个 CIImage 中有多个 CIFilter?

转载 作者:可可西里 更新时间:2023-11-01 05:09:05 25 4
gpt4 key购买 nike

我有两个 CIFilters,曝光和色调。我需要将过滤器组合到一个 UIImage 上。我该怎么办?下面是我到目前为止的一些代码......

CIFilter *hueFilter;
CIFilter *exposureFilter;
CIImage *adjustedImage;

hueFilter = [CIFilter filterWithName:@"CIHueAdjust"];
exposureFilter = [CIFilter filterWithName:@"CIExposureAdjust"];
[hueFilter setValue:[NSNumber numberWithFloat:5] forKey: @"inputAngle"];
[exposureFilter setValue:[NSNumber numberWithFloat:5] forKey: @"inputEV"];

adjustedImage = [CIImage imageWithCGImage:inputCGImage];
[hueFilter setValue:adjustedImage forKey:@"inputImage"];
[exposureFilter setValue:adjustedImage forKey:@"inputImage"];

最佳答案

Core Image 过滤器可以一个接一个地链接在一起。如果代码是用这种想法编写的,我发现它更易于阅读(和编写)。

CIFilter *hueFilter;
CIFilter *exposureFilter;
CIImage *inputImage; // assume this has already been created
CIImage *outputImage;

hueFilter = [CIFilter filterWithName:@"CIHueAdjust"];
[hueFilter setValue:inputImage forKey:kCIInputImageKey];
[hueFilter setValue:[NSNumber numberWithFloat:5] forKey:@"inputAngle"];
outputImage = [hueFilter valueForKey:kCIOutputImageKey];

exposureFilter = [CIFilter filterWithName:@"CIExposureAdjust"];
[exposureFilter setValue:outputImage forKey:kCIInputImageKey];
[exposureFilter setValue:[NSNumber numberWithFloat:5] forKey:@"inputEV"];
outputImage = [exposureFilter valueForKey:kCIOutputImageKey];

上面,创建了第一个过滤器。请注意在可用的情况下使用键的常量。在 block 的末尾,已经为图像设置了过滤器,但是直到渲染图像时才真正执行计算。应用的任何新过滤器都将组合起来以实现最高效的操作。

然后下一个 block 应用下一个过滤器,使用第一个过滤器的输出作为第二个过滤器的输入。这可以根据需要重复多次。通过编写上述代码,您可以根据需要轻松打开/关闭过滤器,如果您有多个过滤器,甚至可以重新排序。

苹果的文档很好,例子也很多:Core Image Programming Guide .

关于ios - 一个 CIImage 中有多个 CIFilter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20778259/

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