gpt4 book ai didi

ios - 不能 CIFilter 图像两次 CGImage 零秒时间

转载 作者:行者123 更新时间:2023-11-28 22:00:29 26 4
gpt4 key购买 nike

我在自定义 UIImageView 类中对过滤图像应用过滤器,这样当我设置“色调”时它会过滤图像。但是,当我调用以下代码时,[[self image] CGImage] 第一次返回正确的值。第二次围绕 [[self image] CGImage] 为 nil,因此 CIFilter 返回也为 nil。

有更好的方法吗?

- (void)setHue:(CGFloat)aHue
{
hue = aHue;
NSLog( @"CG Image? %@", [[self image] CGImage] );
CIFilter *filter = [CIFilter filterWithName:@"CIHueAdjust"];
[filter setDefaults];
[filter setValue:[CIImage imageWithCGImage:[[self image] CGImage]]
forKey:@"inputImage"];
NSLog( @"Setting new hue %f", aHue );
[filter setValue:[NSNumber numberWithFloat:aHue] forKey:@"inputAngle"];
[self setImage:[UIImage imageWithCIImage:[filter valueForKey:@"outputImage"]]];

NSLog( @"Output image %@", [self image] );
}

最佳答案

UIImage 可以由 CGImageCIImage 支持。运行此函数一次并调用 [UIImage imageWithCIImage] 后,新的 UIImage 现在由 CIImage 支持。

这实际上很好,因为下一次这个函数可以运行得更快!您可以简单地检查 CIImage 是否存在并直接使用它:

- (void)setHue:(CGFloat)aHue
{
hue = aHue;
NSLog( @"CG Image? %@", [[self image] CGImage] );
CIFilter *filter = [CIFilter filterWithName:@"CIHueAdjust"];
[filter setDefaults];
if ([[self image] CGImage]) {
[filter setValue:[CIImage imageWithCGImage:[[self image] CGImage]] forKey:@"inputImage"];
}
else {
[filter setValue:[[self image] CIImage] forKey:@"inputImage"];
}

NSLog( @"Setting new hue %f", aHue );
[filter setValue:[NSNumber numberWithFloat:aHue] forKey:@"inputAngle"];
[self setImage:[UIImage imageWithCIImage:[filter valueForKey:@"outputImage"]]];

NSLog( @"Output image %@", [self image] );
}

关于ios - 不能 CIFilter 图像两次 CGImage 零秒时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25272685/

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