适用于iOS的Color Vignette Core Image过滤器?

时间:2014-08-07 02:42:28

标签: ios ios8 core-image

我已经测试了Core Image中的晕影过滤器,虽然很好 - 我想知道是否有人通过链接iOS的各种Core Image过滤器实现了颜色晕影效果(而不是黑边,它软化了边缘)?或者指点我做一个教程吗?

根据下面的答案,这是我的代码 - 但似乎没有太大影响。

func colorVignette(image:UIImage) -> UIImage {
    let cimage = CIImage(image:image)
    let whiteImage = CIImage(image:colorImage(UIColor.whiteColor(), size:image.size))

    var output1 = CIFilter(name:"CIGaussianBlur", withInputParameters:[kCIInputImageKey:cimage, kCIInputRadiusKey:5]).outputImage
    var output2 = CIFilter(name:"CIVignette", withInputParameters:[kCIInputImageKey:whiteImage, kCIInputIntensityKey:vignette, kCIInputRadiusKey:1]).outputImage
    var output = CIFilter(name:"CIBlendWithMask", withInputParameters:[kCIInputImageKey:cimage, kCIInputMaskImageKey:output2, kCIInputBackgroundImageKey:output1]).outputImage

    return UIImage(CGImage:ctx.createCGImage(output, fromRect:cimage.extent()))
}

func colorImage(color:UIColor, size:CGSize) -> UIImage {
    UIGraphicsBeginImageContextWithOptions(size, false, 0)
    color.setFill()
    UIRectFill(CGRect(x:0, y:0, width:size.width, height:size.height))
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return image
}

1 个答案:

答案 0 :(得分:1)

您可以通过将高斯模糊,晕影,混合蒙版和原始图像链接在一起来创建滤镜。首先使用CIGaussianBlur模糊输入图像。接下来,将CIVignette过滤器应用于相同大小的纯白图像。最后,使用CIBlendWithMask过滤器将原始图像与模糊图像混合。