2

私はCIColorWheelGeneratorのMacAppStoreフレンドリーな実装に取り​​組んでいます。これは、Appleのカラーピッカーに表示されるカラーホイールを生成する単純なCIFilterです。残念ながら、これはAppleがMacAppStore宛てのアプリでの使用を許可していない私的なものの一部です。

私は部分的に成功しました、私は動作する実装を手に入れました、しかしそれはまだgenericRGB色空間で立ち往生しています。AppleOneは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

QuartzComposerには非表示の設定があります。オプションキーを押しながらメニューから[設定]を選択します。(エディタ)ペインには、「uncorrectedCoreImage」設定があります。オンにし、QCを閉じてから、再度開きます。これで、すべてのフィルターが未修正の色空間で実行されます。手順を繰り返して、通常の色空間変換に戻ります。

これ以外に、QuartzComposer内で色空間を変更する方法がわかりません。

于 2014-05-08T07:15:06.413 に答える