iOS的彩色渐晕核心图像过滤器?
我在Core Image中测试了vignette过滤器,虽然很好-我想知道是否有人通过链接各种iOS核心图像过滤器实现了颜色vignette效果(而不是黑色边缘,它软化了边缘)?或者给我一个教程来做这个 根据下面的答案,这是我的代码——但似乎没有多大效果iOS的彩色渐晕核心图像过滤器?,ios,ios8,core-image,Ios,Ios8,Core Image,我在Core Image中测试了vignette过滤器,虽然很好-我想知道是否有人通过链接各种iOS核心图像过滤器实现了颜色vignette效果(而不是黑色边缘,它软化了边缘)?或者给我一个教程来做这个 根据下面的答案,这是我的代码——但似乎没有多大效果 func colorVignette(image:UIImage) -> UIImage { let cimage = CIImage(image:image) let whiteImage = CIImage(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
}
您可以通过将高斯模糊、渐晕、混合遮罩和原始图像链接在一起来创建过滤器。首先用
CIGaussianBlur
模糊输入图像。接下来,将CIVignette
过滤器应用于相同大小的纯白图像。最后,使用滤镜将原始图像与模糊图像混合。我尝试过,但似乎没有太大效果,我在上面附上了我的代码。你能上传你得到的图片吗?(如果你没有足够的代表,只需将其上传到一个免费的图片托管网站,我会将其添加到你的帖子中。)好的,但要注意的是,它们看起来和我一样。你可以尝试分步骤进行。例如,仅输出模糊图像,然后查看其是否正确。如果是这样,请输出白色图像并查看其是否正确。如果是这样的话,输出带有晕影的白色图像,看看它是否正确,等等。也许你的遮罩不正确,或者类似的东西,输出只是输入,因为遮罩完全是白色或黑色或其他东西?我一直在测试并发现一个更容易接受的方法:1)CIGaussianBlur图像,2)创建CIRadialGradient遮罩,3)使用CIBlendWithMask将模糊图像和图像合并在一起,使用径向遮罩!看起来很酷。