CIColorInvert 和 CIColorMatrix 没有正确反转图像

CIColorInvert and CIColorMatrix does not invert image properly

我在反转 CIImage 颜色时卡住了。我正在从 CGImage 创建 CIImage,然后应用 CIColorInvert 过滤器或 CIColorMatrix 过滤器,但其中 none 工作正常。当将 CIImage 渲染为 CGImage 时,我得到的结果似乎是饱和的(见附件示例)。

exmples of color invert using different approaches

我想问题出在色彩空间上,但我不知道如何解决。我正在关注核心图像编程指南(章节:CIFilter 的子类化:自定义效果的配方,部分:CIFilter 的子类化以创建 CIColorInvert 过滤器)但没有任何成功。

如有任何提示,我将不胜感激...

问题出在工作颜色 space 上。我找到了问题的答案 here。我创建的 CIContext 现在看起来如下:

var ciContext = CIContext(options: [
    kCIImageColorSpace: NSNull(), 
    kCIImageProperties: NSNull(), 
    kCIContextWorkingColorSpace: NSNull()
])

老实说,我不知道确切的背景,所以我不确定,为什么不将 WorkingColorSpace 设置为 NSNull 就无法正常工作。如果有人知道,我将非常感谢解释。