使用CIFilter进行倾斜移位图像效果

时间:2016-01-17 16:11:51

标签: swift imageview cifilter

我有一个圆形的imageview。我设置了它的图像并给出了下面的色调效果。

    let filter = CIFilter(name: "CIPhotoEffectTonal")!
    filter.setDefaults()
    ...

    filter.setValue(startImage, forKey: kCIInputImageKey)
    let filteredImageData = filter.valueForKey(kCIOutputImageKey) as! CIImage
    let filteredImage = ciContext.createCGImage(filteredImageData, fromRect: filteredImageData.extent)

我想提供另一种效果,例如Instagram上的倾斜移位,以使照片在我的图像视图的边缘更亮/模糊。这样,圆形图像视图和背景之间的色差将被消除/更少。

有没有办法让它成为现实?

1 个答案:

答案 0 :(得分:0)

我使用以下代码部分解决了我的问题。

谢谢@Eric D,你的链接向我展示了这条路。

 func vignetteEffect(image: UIImage) -> UIImage {

    let originalImage = image
    let ciContext = CIContext(options: nil)
        let startImage = CIImage(image: originalImage)


        // Vignette Effect
        let vignetteFilter = CIFilter(name:"CIVignette")!
        vignetteFilter.setDefaults()


        let radius = 8

        vignetteFilter.setValue(startImage, forKey:kCIInputImageKey)
        vignetteFilter.setValue(-5, forKey:"inputIntensity")
        vignetteFilter.setValue(radius, forKey:"inputRadius")

        let filteredImageData = vignetteFilter.valueForKey(kCIOutputImageKey) as! CIImage
        let filteredImageRef = ciContext.createCGImage(filteredImageData, fromRect: filteredImageData.extent)

        return UIImage(CGImage: filteredImageRef)

    }