使用以下命令创建 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:
一个会覆盖另一个吗?还有其他行为吗?