2013-02-12 23 views
5

Çekirdek Görüntüde yeniyim ve bazı filtreleri deniyorum. Bazı filtrelerin çalışmasını sağlayabilirim, ancak diğerleri sadece çalışmayı reddetti.CILinearGradient gibi Core Image filtresi nasıl çalışır?

Örneğin, böyle kodları kullanarak çalışmak için CIGaussianGradient filtreyi alabilirsiniz:

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; 

Ama CILinearGradient bu gibi simiar kodu kullanarak işe alınamıyor:

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; 

neler ben özlüyorum

Bunu iOS 6.0'da test ediyorum.

cevap

5

Bu seferki

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; 
iOS 7. benim için çalıştı