ローカル画像を使用して CIGausianBlur フィルターを作成できます。現在、同じ形式を使用して CIKaleidoscope フィルターと CILightTunnel を作成しようとしています。万華鏡フィルターの私のコードは次のとおりです。
- (UIImage *)applyKaleidoscopeToImage:(UIImage *)image {
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *ci_image = [CIImage imageWithCGImage:image.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIKaleidoscope"];
[filter setValue:ci_image forKey:kCIInputImageKey];
[filter setValue:@55 forKey:kCIInputAngleKey];
CIVector *civ = [CIVector vectorWithX:50 Y:50];
[filter setValue:civ forKey:kCIInputCenterKey];
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]];
return [UIImage imageWithCGImage:cgImage scale:image.scale orientation:image.imageOrientation];
}
このメソッドでは、タイプ NSException のキャッチされない例外が発生し、配列オブジェクトを nil 値に置き換えようとしているという警告が表示されます。
CILightFilter の私のコードは次のとおりです。
- (UIImage *)applyLightTunnelToImage:(UIImage *)image {
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *ci_image = [CIImage imageWithCGImage:image.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CILightTunnel"];
[filter setValue:ci_image forKey:kCIInputImageKey];
CIVector *civ = [CIVector vectorWithX:50 Y:50];
[filter setValue:civ forKey:kCIInputCenterKey];
[filter setValue:@5 forKey:kCIInputRadiusKey];
//[filter setValue:@45 forKey:kCIInputAngleKey];
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]];
return [UIImage imageWithCGImage:cgImage scale:image.scale orientation:image.imageOrientation];
}
ここでも同じ nil 結果が得られます。ご協力いただきありがとうございます。