Un exemple d'utilisation du filter CIGaussianGradient pour Core Image

Je cherche un échantillon de code de ce filter d'image de base pour iOS. Ces filters avec l'inputImage dans le paramètre, je peux comprendre comment mettre en œuvre. Mais ceux sans le paramètre inputImage, je ne suis pas sûr comment cela fonctionne.

Voici l'extrait du document d'Apple:

CIGaussianGradient

Génère un dégradé qui varie d'une couleur à l'autre en utilisant une dissortingbution gaussienne. Paramètres

inputCenter

A CIVector class whose atsortingbute type is CIAtsortingbuteTypePosition and whose display name is Center. Default value: [150 150] Identity: (null) 

inputColor0

 A CIColor class whose display name is Color 1. 

inputColor1

 A CIColor class whose display name is Color 2. 

inputRadius

 An NSNumber class whose atsortingbute type is CIAtsortingbuteTypeDistance and whose display name is Radius. Default value: 300.00 Minimum: 0.00 Maximum: 0.00 Slider minimum: 0.00 Slider maximum: 800.00 Identity: 300.00 

Cela devrait vous aider à démarrer … même si je ne suis pas sûr de savoir pourquoi cela produit un dégradé magenta sur blanc dans iOS, alors qu'il produit un dégradé magenta sur noir dans Quartz Composer. (Si vous n'avez pas utilisé Quartz Composer, il est inclus avec les outils de développement d'Apple et est idéal pour tester les filters Core Image)

Pour faire quelque chose d'utile avec cela, je crois que vous devez le recadrer après – autrement, il aura des dimensions infinies (selon Quartz Composer).

 // set up the parameters for the filter 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]; // create a CIImage and apply the filter CIImage *theCIImage = [[CIImage alloc] init]; theCIImage = [CIFilter filterWithName:@"CIGaussianGradient" keysAndValues:@"inputCenter", centerVector, @"inputColor0", color0, @"inputColor1", color1, @"inputRadius", radius, nil].outputImage; // crop the image using CICrop CGRect rect = CGRectMake(0.0, 0.0, 600.0, 600.0); theCIImage = [CIFilter filterWithName:@"CICrop" keysAndValues:kCIInputImageKey, theCIImage, @"inputRectangle", rect, nil].outputImage;