我有一组用户生成的PNG图像,需要将它们嵌入到可打印的PDF中。印刷公司设定的限制之一是所有图像都在CMYK颜色空间中。如何将PNG(或包含该PNG的UIImage)转换为CMYK?默认情况下,色彩空间为sRGB。
您应该考虑CGColorSpace类和CGColorSpaceCreateDeviceCMYK函数。您可以CGContex
使用此初始化程序创建一个,并将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)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句