2016-10-30 7 views
1

У меня есть набор пользовательских изображений PNG, которые мне нужно встроить в готовые к печати PDF-файлы. Одним из ограничений, установленных полиграфической компанией, является то, что все изображения находятся в цветовом пространстве CMYK. Как преобразовать PNG (или UIImage, содержащий этот PNG) в CMYK? По умолчанию цветовое пространство является sRGB.Как преобразовать PNG-изображение в CMYK в iOS?

ответ

1

Вы должны рассмотреть CGColorSpace класс и CGColorSpaceCreateDeviceCMYK функция. Вы можете создать CGContex с помощью инициализатора this и передать цветовое пространство CMYK в качестве параметра к нему. Затем просто нарисуйте CGImage из этого контекста и создайте из него UIImage.

Пример:

func createCMYK(fromRGB image: UIImage) -> UIImage? { 
    let size = image.size 
    let colorSpace:CGColorSpace = CGColorSpaceCreateDeviceCMYK() 
    let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue) 
    guard let context = CGContext(data: nil, 
            width: Int(size.width), 
            height: Int(size.height), 
            bitsPerComponent: 8, 
            bytesPerRow: 4 * Int(size.width), 
            space: colorSpace, 
            bitmapInfo: bitmapInfo.rawValue) else { return nil }    
    context.draw(image.cgImage!, in: CGRect(origin: .zero, size: size)) 
    guard let cgImage = context.makeImage() else { return nil } 
    return UIImage(cgImage: cgImage) 
} 
+0

Это не работает. Он сбой «: CGBitmapContextCreate: неподдерживаемая комбинация параметров: установите переменную окружения CGBITMAP_CONTEXT_LOG_ERRORS, чтобы увидеть детали» –