отключение коррекции цвета в кварце 2d - PullRequest
1 голос
/ 01 февраля 2009

Хорошо, я знаю, что невозможно фактически отключить коррекцию цвета в кварце. То, что я ищу, является независимой от устройства настройкой цветового пространства, которая не изменяет значения RGB, которые я рисую в CGLayer.

Я перепробовал все профили 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);

Используется матрица преобразования цветов Apple RGB и точка белого D65.

Цвета по-прежнему немного меняются, хотя мне это намного приятнее, чем настройкам, зависящим от устройства.

Вот как я пишу CGLayer в TIFF:

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

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 06 февраля 2009

Почему бы не объявить, что ваши цвета являются частью того же цветового пространства, что и пункт назначения CGLayer?

Док для CGColorSpaceCreateDeviceRGB, кажется, говорит именно это:

CGColorSpaceCreateDeviceRGB

...