0

CIFilterGenerator次のコードを使用して、CALayer で使用するを作成しようとしています。

CIFilterGenerator *generator = [[CIFilterGenerator alloc] init];

CIFilter *colorFilter = [CIFilter filterWithName:@"CIConstantColorGenerator"];
[colorFilter setDefaults];
[colorFilter setValue:[CIColor colorWithRed:0.0 green:1.0 blue:0.0 alpha:0.5] forKey:kCIInputColorKey];

CIFilter *cropFilter = [CIFilter filterWithName:@"CICrop"];
[cropFilter setDefaults];
[cropFilter setValue:[CIVector vectorWithX:0.0 Y:0.0 Z:1.0 W:1.0] forKey:@"inputRectangle"];
[generator connectObject:colorFilter withKey:kCIOutputImageKey toObject:cropFilter withKey:kCIInputImageKey];

CIFilter *colorMap = [CIFilter filterWithName:@"CIColorMap"];
[colorMap setDefaults];
[generator connectObject:cropFilter withKey:kCIOutputImageKey toObject:colorMap withKey:kCIInputGradientImageKey];

CIFilter *blur = [CIFilter filterWithName:@"CIGaussianBlur"];
[blur setDefaults];
[blur setValue:@10.0 forKey:kCIInputRadiusKey];
[generator connectObject:colorMap withKey:kCIOutputImageKey toObject:blur withKey:kCIInputImageKey];


[generator exportKey:kCIInputColorKey fromObject:colorFilter withName:nil];
[generator exportKey:kCIInputImageKey fromObject:colorMap withName:nil];

[generator exportKey:kCIOutputImageKey fromObject:blur withName:nil];

ただし、これをレイヤーにアタッチしようとすると、例外が発生します。

/SourceCache/CoreImage/CoreImage-8.2.2/API/CIFilter.mm:588: CIColorMap apply:: Caught exception: CIColorMap: colorMap: nil value for argument #0 (src)

カラーマップの入力画像をエクスポートしているので、これは奇妙です。さらに奇妙なのは、エクスポートされた出力イメージをカラー マップに変更すると、期待どおりに機能することです (もちろん、ぼかしを除く)。

4

0 に答える 0