2

我正在开发一个 MacAppStore 友好的 CIColorWheelGenerator 实现。它是一个简单的 CIFilter,它生成您可以在 Apple 的颜色选择器中看到的色轮。遗憾的是,这是 Apple 不允许我们在面向 MacAppStore 的应用程序中使用的私有内容的一部分。

我已经部分成功了,我得到了一个有效的实现,但它仍然停留在 genericRGB 颜色空间中。Apple 使用 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 的颜色选择器(右)你可以看到一些相似之处:

细微差别2

4

1 回答 1

1

Quartz Composer 有一个隐藏设置。从菜单中选择首选项时按住选项键。在(编辑器)窗格中,将有一个“uncorrectedCoreImage”设置。检查它,关闭 QC,然后重新打开它。现在所有滤镜都将在未经校正的色彩空间中运行。重复该过程以返回正常的色彩空间转换。

除此之外,我不知道有什么方法可以改变 Quartz Composer 中的色彩空间。

于 2014-05-08T07:15:06.413 回答