У меня проблема с изменением цвета пикселей NSImage. Я проверяю цвет пикселя и меняю его.
Вот мой код:
image.lockFocus()
guard let ctx = NSGraphicsContext.current?.cgContext else {
image.unlockFocus()
return nil
}
// draw
guard let buffer = ctx.data else {
return nil
}
let pixelBuffer = buffer.bindMemory(to: UInt32.self, capacity: width * height)
let widthInPixelbuffer = ctx.bytesPerRow / (ctx.bitsPerPixel / ctx.bitsPerComponent)
let heightInPixelBuffer = ctx.height
let upperBound = Int(Float(heightInPixelBuffer) * 0.5)
for column in 0 ..< widthInPixelbuffer {
for row in 1 ... upperBound {
let offset = (upperBound - row) * widthInPixelbuffer + column
if pixelBuffer[offset] == bgColor {
break
} else {
pixelBuffer[offset] = 0xFFFFFF00 // yellow
}
}
}
image.unlockFocus()
Моя проблема в том, что после того, как я изменил какой-то пиксель на желтый, я вижу то, что NSImage прозрачен. (на моем Ma c book pro)
Но он отлично работает на моем Ma c mini. Я вижу желтый цвет, как и ожидалось.
Я не могу понять, может кто-нибудь сказал мне почему?
Как я могу это исправить?
Я искал это несколько дней, но я не нахожу причину в сети.
спасибо!