Цвет, полученный из CGWindowListCreateImage и NSBitmapImageRep.colorAt, всегда немного отличается от исходного цвета - PullRequest
0 голосов
/ 25 февраля 2020

парни.

В качестве следующего кода я использую CGWindowListCreateImage для захвата изображения экрана и использую NSBitmapImageRep.colorAt для получения цвета из изображения.

Но цвет результата всегда немного отличается от оригинального цвета. Например, если исходный цвет - RGB (121, 177, 247), результирующий цвет - RGB (123, 178, 244).

Что мне делать?

Спасибо.

guard let image = CGWindowListCreateImage(
    NSScreen.main!.frame,
    .optionOnScreenBelowWindow,
    CGWindowID(self.view.window!.windowNumber),
    .bestResolution)
else{ return }

let repImage = NSBitmapImageRep(cgImage: image)
repImage.colorSpaceName = .deviceRGB
if let color = repImage.colorAt(x: 200, y: 200){
    print("\(color.redComponent * 255), \(color.greenComponent * 255), \(color.blueComponent * 255), \(color.colorSpaceName)")
}
...