无法将CIImage保存到相机胶卷 - Swift 3

时间:2017-01-18 08:44:49

标签: ios swift cocoa-touch swift3

我试图将过滤器应用于CIImage,后者是从AVCaptureSession的像素缓冲区创建的,然后将其保存到相机胶卷。

这是我的代码

        let image = CIImage(cvPixelBuffer: pixelBuffer)

        let filter = CIFilter(name: "CISepiaTone")
        filter?.setValue(image, forKey: kCIInputImageKey)
        filter?.setValue(0.1, forKey: kCIInputIntensityKey)

        let newImage = UIImage(ciImage: (filter?.outputImage)!)

        print ("new image: \(newImage)")

        UIImageWriteToSavedPhotosAlbum(newImage, self,    #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)

这不会抛出任何错误,当调用image(_:didFinishSavingWithError:contextInfo :)时它没有错误

但图片没有出现在我的图书馆中。很混乱!任何帮助表示赞赏。

感谢。

1 个答案:

答案 0 :(得分:3)

我也遇到过同样情况的问题并解决了。

我的方法是:首先将其转换为CGImage,然后将CGImage对象转换为UIImage,在这种情况下,您可以成功将处理后的图像保存到相机胶卷。

这是代码。

let input = CIImage(image: MyImageView.image!)
let filter = PinkyFilter() // My custom filter
filter.setValue(input, forKey: kCIInputImageKey)
let context = CIContext() // Prepare for create CGImage
let cgimg = context.createCGImage(filter.outputImage, from: filter.outputImage.extent)
let output = UIImage(cgImage: cgimg!)

然后输出是一个可保存的对象。

相关问题