使用以下命令创建 Core Image CIContext时:
contextWithCGLContext:pixelFormat:colorSpace:options:
您可以使用 指定颜色空间CGColorSpaceRef。但是,options您可以传递的字典也允许您设置某些颜色空间参数。来自苹果的文档:
kCIContextOutputColorSpace在将图像渲染到上下文之前用于图像的颜色空间的键。默认情况下,Core Image 使用 GenericRGB 颜色空间,将颜色匹配留给系统。您可以通过提供 Quartz 2D CGColorSpace 对象 (CGColorSpaceRef) 来指定不同的输出颜色空间。(有关创建和使用 CGColorSpace 对象的信息,请参阅 Quartz 2D 编程指南。)
kCIContextWorkingColorSpace用于图像操作的颜色空间的键。默认情况下,Core Image 假定处理节点是每像素 128 位、线性光、使用 GenericRGB 颜色空间的预乘 RGBA 浮点值。您可以通过提供 Quartz 2D CGColorSpace 对象 (CGColorSpaceRef) 来指定不同的工作色彩空间。请注意,工作色彩空间必须基于 RGB。如果您有 YUV 数据作为输入(或其他不基于 RGB 的数据),您可以使用 ColorSync 函数转换为工作色彩空间。(有关创建和使用 CGColorSpace 对象的信息,请参阅 Quartz 2D 编程指南。)
我的问题是,这些不同的色彩空间参数如何相互作用?
colorspace:我的假设是使用上面的参数设置颜色空间来创建 CIContext 与使用字典kCIContextOutputColorSpace中的设置颜色空间相同options:。那是对的吗?如果不是,每个参数是什么意思?
如果是这样,那么如果同时使用colorspace:参数和字典中的kCIContextOutputColorSpace键设置颜色空间会发生什么?options:一个会覆盖另一个吗?还有其他行为吗?