Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS的彩色渐晕核心图像过滤器?_Ios_Ios8_Core Image - Fatal编程技术网

iOS的彩色渐晕核心图像过滤器?

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

我在Core Image中测试了vignette过滤器,虽然很好-我想知道是否有人通过链接各种iOS核心图像过滤器实现了颜色vignette效果(而不是黑色边缘,它软化了边缘)?或者给我一个教程来做这个

根据下面的答案,这是我的代码——但似乎没有多大效果

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将模糊图像和图像合并在一起,使用径向遮罩!看起来很酷。