1

わかりました、クォーツの色補正を実際に無効にすることはできないことを知っています. 私が探しているのは、CGLayer で描画する 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);

これは、Apple RGB の色変換マトリックスと D65 白色点を使用します。

色はまだ少しシフトしますが、デバイスに依存する設定よりもこれで満足しています.

CGLayer を TIFF に書き込む方法は次のとおりです。

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

どんな助けでも大歓迎です。

4

1 に答える 1

1

あなたの色が目的地と同じ色空間の一部であることを宣言してみませんCGLayerか?

doco forCGColorSpaceCreateDeviceRGBはまさにそれを言っているようです:

CGColorSpaceCreateDeviceRGB

于 2009-02-06T10:21:24.067 に答える