2013-02-12 24 views
5

Tôi mới sử dụng Core Image và đang thử một số bộ lọc. Tôi có thể nhận được một số bộ lọc để làm việc nhưng những người khác chỉ từ chối làm việc.Làm cách nào để có bộ lọc Hình ảnh Lõi như CILinearGradient để hoạt động?

Ví dụ, tôi có thể nhận được bộ lọc CIGaussianGradient làm việc sử dụng mã như thế này:

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; 

Nhưng tôi không thể có được CILinearGradient làm việc sử dụng mã simiar như thế này:

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; 

gì tôi có bị mất không?

Tôi đang thử nghiệm trên iOS 6.0.

Trả lời

5

Điều này làm việc cho tôi trên 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; 
Các vấn đề liên quan