我正在开发CIColorWheelGenerator的MacAppStore友好实现。这是一个简单的CIFilter,它可以生成你在Apple的颜色选择器中看到的色轮。可悲的是,这是私人事物的一部分Apple不允许我们在我们的应用程序中使用MacAppStore。
我已经部分成功,我得到了一个有效的实现,但它仍然停留在genericRGB色彩空间。 Apple one使用sRGB色彩空间。我找到了一个解决方法:
CGColorSpaceRef cSpace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB);
NSDictionary *dict = @{kCIContextWorkingColorSpace : CFBridgingRelease(cSpace),};
CIContext *ctx = [CIContext contextWithCGContext:[[NSGraphicsContext currentContext] graphicsPort] options:dict];
[ctx drawImage:_wheelImage inRect:rect fromRect:_wheelRect];
(_ wheelImage是使用我的色轮生成器滤镜生成的CIImage)。
我已经检查了QuartzComposer,CIColorWheelGenerator接缝处理sRGB颜色空间(基于我的颜色感知以及我自己的实现没有给出相同结果的事实)。 知道来了一个问题:我误解了什么,我在QC中使用的CIColorWheelGenerator不只是一个CIFilter,而是带有更复杂的代码,或者是否可以指定CIFilter中的工作色彩空间(默认为genericRGB)?
这是一张图片,所以你可以看到Apple的色轮(右边)与我的不同(逻辑上,在左边):
我的应用程序(左)与Apple的颜色选择器(右)你可以看到一些相似之处:
答案 0 :(得分:1)
Quartz Composer有一个隐藏的设置。从菜单中选择“首选项”时按住选项键。在(编辑器)窗格中,将有一个' uncorrectedCoreImage'设置。检查它,关闭QC,然后重新打开它。现在,所有过滤器都将在未修正的颜色空间中运行。重复此过程以返回正常的色彩空间转换。
除此之外,我不知道如何更改Quartz Composer中的色彩空间。