Изменить цвет пикселя NSImage - PullRequest
       116

Изменить цвет пикселя NSImage

0 голосов
/ 01 августа 2020

У меня проблема с изменением цвета пикселей 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. Я вижу желтый цвет, как и ожидалось.

Я не могу понять, может кто-нибудь сказал мне почему?

Как я могу это исправить?

Я искал это несколько дней, но я не нахожу причину в сети.

спасибо!

...