次のコードで1pxx1pxのスクリーンショットをキャプチャしています。次に、画像をサンプリングしてNSColorを取得します。
CGImageRef image = CGDisplayCreateImageForRect(displayID, CGRectMake(0, 0, 1, 1));
NSBitmapImageRep *rawImage = [[NSBitmapImageRep alloc] initWithCGImage:image];
NSColor *convertedColor = [rawImage colorAtX:0 y:0];
キャプチャされたピクセルの色がソース画像の色と一致しないことを除いて、すべてが正しく機能します。例:フォトショップで赤い四角を作成します。正方形の色をRGB赤:255、緑:0、青:0に設定しました。画面上のその正方形の内側のピクセルをキャプチャすると、RGB赤:255、緑:0、青:17になります。キャプチャした画像を元の色と一致させる方法はありますか?
編集: また、フォトショップで赤い正方形のスクリーンショットを撮り、スクリーンショットのRGBカラーを読み取ると、色も赤:255、緑:0、青:17になります。OSでの色空間の振る舞いのようです。これは予想される動作でしょうか?このコードは基本的に、フォトショップにあるようなカラーピッカーです。しかし、私はフォトショップがプロセスのどこかで色を修正すると仮定しています。何か案は?
ありがとう!