2013-02-12 19 views
5

私はCore Imageを初めて使用しており、いくつかのフィルタを試しています。私はいくつかのフィルタを動作させることができますが、他のフィルタは動作を拒否しました。CILinearGradientなどのCore Imageフィルタを使用するにはどうすればよいですか?

例えば、私はこのようなコードを使用して動作するようにCIGaussianGradientフィルタを得ることができます。

CIVector *centerVector = [CIVector vectorWithX:150 Y:150]; 
CIColor *color0 = [CIColor colorWithRed:1.0 green:0.0 blue:1.0 alpha:1.0]; 
CIColor *color1 = [CIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0]; 
NSNumber *radius = [NSNumber numberWithFloat:300.0]; 

CIImage *theCIImage = [CIFilter filterWithName:@"CIGaussianGradient" keysAndValues:@"inputCenter", centerVector, @"inputColor0", color0, @"inputColor1", color1, @"inputRadius", radius, nil].outputImage; 

UIImage *newImage = [UIImage imageWithCIImage: theCIImage]; 
self.ImgView.image = newImage; 

しかし、私はCILinearGradientは、このようなsimiarコードを使用して動作させることはできません。

CIVector *point0 =[CIVector vectorWithX:0 Y:0]; 
CIVector *point1 =[CIVector vectorWithX:200 Y:200]; 
CIColor *color0 = [CIColor colorWithRed:1.0 green:0.0 blue:1.0 alpha:1.0]; 
CIColor *color1 = [CIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0]; 

CIImage *theCIImage = [CIFilter filterWithName:@"CILinearGradient" keysAndValues:@"inputPoint0", point0, @"inputPoint1", point1, @"inputColor0", color0, @"inputColor1", color1, nil].outputImage; 
UIImage *newImage = [UIImage imageWithCIImage: theCIImage]; 
self.ImgView.image = newImage; 

何私は行方不明ですか?

iOS 6.0でテストしています。

答えて

5

この1つはiOSの7

CIContext *coreImageContext = [CIContext contextWithOptions:nil]; 
CIFilter *gradientFilter = [CIFilter filterWithName:@"CILinearGradient"]; 
[gradientFilter setDefaults]; 
CIColor *startColor = [CIColor colorWithCGColor:[UIColor yellowColor].CGColor]; 
CIColor *endColor = [CIColor colorWithCGColor:[UIColor redColor].CGColor]; 
CIVector *startVector = [CIVector vectorWithX:0 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"]; 
CIImage *outputImage = [gradientFilter outputImage]; 
CGImageRef cgimg = [coreImageContext createCGImage:outputImage fromRect:CGRectMake(0, 0, 100, 100)]; 
UIImage *newImage = [UIImage imageWithCGImage:cgimg]; 
self.ImgView.image = newImage; 
に私のために働きました
関連する問題