我正在尝试将滤镜应用于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:)被调用它没有错误
但是该图像没有出现在我的库中。非常令人困惑!任何帮助表示赞赏。
谢谢。
我也遇到过同样的情况并解决了这个问题。
我的方法是:先将其转换为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!)
然后,输出是一个可保存的对象。