【问题标题】:An example use of CIGaussianGradient filter for Core Image一个使用 CIGaussianGradient 过滤器的 Core Image 示例
【发布时间】:2011-12-23 07:48:31
【问题描述】:

我正在寻找这个适用于 iOS 的 Core Image 过滤器的代码示例。参数中带有inputImage的那些过滤器,我可以弄清楚如何实现。但是那些没有 inputImage 参数的,我不确定它是如何工作的。

这是苹果文档的摘录:

CIGaussianGradient

使用高斯分布生成从一种颜色到另一种颜色的渐变。 参数

输入中心

A CIVector class whose attribute type is CIAttributeTypePosition and whose display name is Center.

Default value: [150 150] Identity: (null) 

输入颜色0

A CIColor class whose display name is Color 1.

输入颜色1

A CIColor class whose display name is Color 2.

输入半径

An NSNumber class whose attribute type is CIAttributeTypeDistance 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

【问题讨论】:

    标签: ios ios5 core-image


    【解决方案1】:

    这应该可以帮助您入门...尽管我不确定为什么这会在 iOS 中产生白色渐变上的洋红色,而在 Quartz Composer 中会产生黑色渐变上的洋红色。 (如果你没有使用 Quartz Composer,它包含在 Apple 的开发工具中,非常适合测试 Core Image 过滤器)

    要对它做任何有用的事情,我相信你必须在之后对其进行裁剪 - 否则它将具有无限维度(根据 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;
    

    【讨论】:

    • 我得到 - [显示]:忽略虚假层尺寸(3402823466383485981170410.000000,3402823466348451117234663485980410.000000,340282346634852859811704183484516925440.000000) i>用这个。由于某种原因,裁剪没有开始。
    • 我发现了问题所在。 inputRectangle 参数需要 CIVector,而不是 CGRect
    • 此外,Quartz Composer 不再与 XCode 捆绑在一起,但目前可以在名为“Graphics Tools”的包中额外下载。
    • 使用vectorWithCGRect将rect转成vector
    猜你喜欢
    • 2015-11-11
    • 2012-05-27
    • 2014-05-19
    • 2022-01-26
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    相关资源
    最近更新 更多