gpt4 book ai didi

ios - CITemperatureAndTint 和 CIToneCurve 不起作用

转载 作者:行者123 更新时间:2023-11-29 04:50:44 28 4
gpt4 key购买 nike

我的 iOS 设备未对 CITemperatureAndTint 和 CIToneCurve 进行任何处理

但是,如果 CISepiaTone 做得对的话!!

outputImage = [CIFilter filterWithName:@"CIToneCurve" keysAndValues:@"inputImage", image, @"inputPoint0", [CIVector vectorWithX:0 Y:0], @"inputPoint1", [CIVector vectorWithX:0.25 Y:0.25], @"inputPoint2", [CIVector vectorWithX:0.5 Y:0.5], @"inputPoint3", [CIVector vectorWithX:0.75 Y:0.75], @"inputPoint4", [CIVector vectorWithX:1 Y:1], nil].outputImage;

这有什么问题吗?

最佳答案

使用此代码:它有效

- (UIImage*)applyToneCurve:(NSArray*)pointArray {

if ([pointArray count] < 2) {
return self;
}

CGPoint first = [[pointArray objectAtIndex:0] CGPointValue];

first.x /= 255.0;
first.y /= 255.0;

CGPoint firstPoint = first;

CGPoint last = [[pointArray lastObject] CGPointValue];

last.x /= 255.0;
last.y /= 255.0;

CGPoint fifthPoint = last;

CGPoint secondPoint = CGPointMake(0.25, 0.25);
CGPoint thirdPoint = CGPointMake(0.50, 0.50);
CGPoint fourthPoint = CGPointMake(0.75, 0.75);

for (int i = 1; i < [pointArray count] - 1; i++) {

CGPoint point = [[pointArray objectAtIndex:i] CGPointValue];

point.x /= 255.0;
point.y /= 255.0;

if (i == 1) {
secondPoint = point;
}
else if (i == 2) {
thirdPoint = point;
}
else if (i == 3)
fourthPoint = point;

}

CIImage *inputImage = [CIImage imageWithCGImage:self.CGImage];

CIFilter *toneCurveFilter = [CIFilter filterWithName:@"CIToneCurve"];
[toneCurveFilter setDefaults];
[toneCurveFilter setValue:inputImage forKey:kCIInputImageKey];

[toneCurveFilter setValue:[CIVector vectorWithX:firstPoint.x Y:firstPoint.y] forKey:@"inputPoint0"];

[toneCurveFilter setValue:[CIVector vectorWithX:secondPoint.x Y:secondPoint.y] forKey:@"inputPoint1"];

[toneCurveFilter setValue:[CIVector vectorWithX:thirdPoint.x Y:thirdPoint.y] forKey:@"inputPoint2"];

[toneCurveFilter setValue:[CIVector vectorWithX:fourthPoint.x Y:fourthPoint.y] forKey:@"inputPoint3"];

[toneCurveFilter setValue:[CIVector vectorWithX:fifthPoint.x Y:fifthPoint.y] forKey:@"inputPoint4"];

CIImage *outputImage = [toneCurveFilter outputImage];

CGImageRef ref = [[CIContext contextWithOptions:nil] createCGImage:outputImage fromRect:outputImage.extent];

UIImage *result = [UIImage imageWithCGImage:ref];

if (ref) {

CGImageRelease(ref);
}

return result;
}

PointArray包含曲线从开始到结束的5个NSValue点。

关于ios - CITemperatureAndTint 和 CIToneCurve 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8892339/

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