Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 在quartz 2d中禁用颜色校正_Cocoa_Macos_Quartz Graphics_Color Management - Fatal编程技术网

Cocoa 在quartz 2d中禁用颜色校正

Cocoa 在quartz 2d中禁用颜色校正,cocoa,macos,quartz-graphics,color-management,Cocoa,Macos,Quartz Graphics,Color Management,好的,我知道实际上不可能在石英中禁用颜色校正。我要找的是一个独立于设备的颜色空间设置,它不会改变我在CGB图层中绘制的RGB值 我尝试了系统库中的所有ICC配置文件,它们都会改变颜色 这是我得到的最好结果: const CGFloat whitePoint[] = {0.95047, 1.0, 1.08883}; const CGFloat blackPoint[] = {0, 0, 0}; const CGFloat gamma[] = {1, 1, 1}; const CGFloat mat

好的,我知道实际上不可能在石英中禁用颜色校正。我要找的是一个独立于设备的颜色空间设置,它不会改变我在CGB图层中绘制的RGB值

我尝试了系统库中的所有ICC配置文件,它们都会改变颜色

这是我得到的最好结果:

const CGFloat whitePoint[] = {0.95047, 1.0, 1.08883};
const CGFloat blackPoint[] = {0, 0, 0};
const CGFloat gamma[] = {1, 1, 1};
const CGFloat matrix[] = {0.449695, 0.244634, 0.0251829, 0.316251, 0.672034, 0.141184, 0.18452, 0.0833318, 0.922602 };
CGColorSpaceRef colorSpace = CGColorSpaceCreateCalibratedRGB(whitePoint, blackPoint, gamma, matrix);
这使用苹果RGB的颜色转换矩阵和D65白点

颜色仍然会有一点变化,尽管与依赖于设备的设置相比,我更喜欢这种设置

下面是我如何将CGLayer写入TIFF的:

CIImage *image = [CIImage imageWithCGLayer:cgLayer];
NSBitmapImageRep *bitmapImage = [[NSBitmapImageRep alloc] initWithCIImage:image];
[[bitmapImage TIFFRepresentation] writeToFile:fileName atomically:YES];

如果有任何帮助,我们将不胜感激。

为什么不声明您的颜色与您的目的地属于同一颜色空间
CGLayer

CGColorSpaceCreateDeviceRGB
的文档似乎只是在说:


为什么不声明您的颜色与目的地的颜色相同
CGLayer

CGColorSpaceCreateDeviceRGB
的文档似乎只是在说: