我已经测试了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
}
答案 0 :(得分:1)
您可以通过将高斯模糊,晕影,混合蒙版和原始图像链接在一起来创建滤镜。首先使用CIGaussianBlur
模糊输入图像。接下来,将CIVignette
过滤器应用于相同大小的纯白图像。最后,使用CIBlendWithMask
过滤器将原始图像与模糊图像混合。