UIImage.ciImage返回nil

时间:2017-11-23 07:50:44

标签: ios swift xcode uiimage ciimage

我在扩展中从UIImage获取CIImage时遇到了一些问题。 我正在尝试在UIImage上应用WhitePointAdjust。

这是我的代码:

extension UIImage{
enum ImageError: Error {
    case filterLookupError(String)
    case filterError(CIFilter)
    case ciImageError(CIImage?)
    case cgImageError(CIImage, CGRect)
}
func applyWhitePointAdjustment(_ whiteColor: UIColor) -> UIImage?{
    let context = CIContext(options: nil)

    let filterName = "CIWhitePointAdjust"
    guard let wpaFilter = CIFilter(name: filterName) else {
        ImageError.filterLookupError("filter not found: " + filterName).handle()
        return nil
    }

    guard let inputImage = self.ciImage else {
        ImageError.ciImageError(self.ciImage).handle()
        return self
    }
    wpaFilter.setValue(inputImage, forKey: kCIInputImageKey)
    wpaFilter.setValue(whiteColor, forKey: kCIInputColorKey)

    guard let output = wpaFilter.outputImage else {
        ImageError.filterError(wpaFilter).handle()
        return nil
    }
    guard let cgImage = context.createCGImage(output, from: output.extent) else {
        ImageError.cgImageError(output, output.extent).handle()
        return nil
    }


    return UIImage(cgImage: cgImage)
}
}

我们非常感谢您的帮助。我检查了UIImage是否在那里,它是。

过滤器也不起作用,但我没有时间检查出来。但是,如果有人有快速的解决方案,那么也将受到赞赏

更新

我替换了

guard let inputImage = self.ciImage

使用:

guard let inputImage = CIImage(image: self)

它开始工作了。但我真的不明白其中的区别。有人可以解释一下吗?

0 个答案:

没有答案