У меня есть набор пользовательских изображений PNG, которые мне нужно встроить в готовые к печати PDF-файлы. Одним из ограничений, установленных полиграфической компанией, является то, что все изображения находятся в цветовом пространстве CMYK. Как преобразовать PNG (или UIImage, содержащий этот PNG) в CMYK? По умолчанию цветовое пространство является sRGB.Как преобразовать PNG-изображение в CMYK в iOS?
1
A
ответ
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)
}
Это не работает. Он сбой «: CGBitmapContextCreate: неподдерживаемая комбинация параметров: установите переменную окружения CGBITMAP_CONTEXT_LOG_ERRORS, чтобы увидеть детали» –