2

Core Image を使用して写真に線形グラデーションを適用したいと思います。私が使用しているコードは次のとおりです (または、Xcode プロジェクトで確認できます: http://cl.ly/2Z0Z2f1a3Q27 ):

CIContext *coreImageContext = [CIContext contextWithOptions:nil];

CIFilter *gradientFilter = [CIFilter filterWithName:@"CILinearGradient"];
[gradientFilter setDefaults];
CIColor *startColor = [CIColor colorWithCGColor:[UIColor yellowColor].CGColor];
CIColor *endColor = [CIColor colorWithCGColor:[UIColor blackColor].CGColor];
CIVector *startVector = [CIVector vectorWithX:100 Y:0];
CIVector *endVector = [CIVector vectorWithX:100 Y:100];
[gradientFilter setValue:startVector forKey:@"inputPoint0"];
[gradientFilter setValue:endVector forKey:@"inputPoint1"];
[gradientFilter setValue:startColor forKey:@"inputColor0"];
[gradientFilter setValue:endColor forKey:@"inputColor1"];

UIImage *originalImage = [UIImage imageNamed:@"testImage.jpeg"];
CIImage *ciImage = [CIImage imageWithCGImage:originalImage.CGImage];
[gradientFilter setValue:ciImage forKey:kCIInputImageKey];
CIImage *resultCIImage = [gradientFilter valueForKey:kCIOutputImageKey];
CGImageRef resultCGImage = [coreImageContext createCGImage:resultCIImage fromRect:[resultCIImage extent]];
UIImage *resultUIImage = [UIImage imageWithCGImage:resultCGImage scale:[[UIScreen mainScreen] scale] orientation:UIImageOrientationUp];
CGImageRelease(resultCGImage);

UIImageView *filteredImageView = [[UIImageView alloc] initWithImage:resultUIImage];

デバイス (iPhone 5、iOS 6.0.1) およびシミュレーター (iOS 6) でこのコードを実行すると、例外が発生します。

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<CILinearGradient 0x1f857ee0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key inputImage.'

例外が発生している行は[gradientFilter setValue:ciImage forKey:kCIInputImageKey].

このエラーを表示するためにビルドできる Xcode プロジェクトのサンプルを次に示します: http://cl.ly/2Z0Z2f1a3Q27

4

1 に答える 1

2

CILinearGradient には、2 つのポイントと 2 つの色の 4 つのプロパティしかありません。CILinearGradient を CISourceOverCompositing フィルターとチェーンして、画像にグラデーションを合成する必要があります。フィルタ リファレンスを参照してください:

https://developer.apple.com/library/mac/documentation/graphicsimaging/reference/CoreImageFilterReference/Reference/reference.html#//apple_ref/doc/filter/ci/CILinearGradient

于 2013-01-28T22:59:16.147 に答える