Конвертировать Color CGContext в другое цветовое пространство - PullRequest
0 голосов
/ 26 августа 2018

У меня есть черно-белое изображение с цветовым пространством, созданным CGColorSpaceCreateDeviceGray().Я хочу преобразовать это изображение в цветовое пространство RGB.Для этого я добавил расширение для CGContext следующим образом:

extension CGContext {
    func convert(to colorSpace: CGColorSpace) -> CGContext {
        let rowBytes = self.width * (colorSpace.numberOfComponents + 1)
        let context = CGContext(data: nil, 
                                width: width, 
                                height: height, 
                                bitsPerComponent: bitsPerComponent, 
                                bytesPerRow: rowBytes, 
                                space: colorSpace, 
                                bitmapInfo: 
                         CGImageAlphaInfo.premultipliedLast.rawValue)!
        let rect = CGRect(x: 0, y: 0, width: self.width, height: self.height)
        context.clear(rect)
        context.draw(self.makeImage()!, in: rect)
        return context
    }
}

Это работает довольно хорошо, но кажется, что должен быть более оптимальный способ сделать это.Есть ли у вас какие-либо мнения по этому вопросу?

...