我有一组用户生成的 PNG 图像,我需要将它们嵌入到可打印的 PDF 中。打印公司设定的限制之一是所有图像都在 CMYK 色彩空间中。如何将 PNG(或包含该 PNG 的 UIImage)转换为 CMYK?默认情况下,颜色空间为 sRGB。
最佳答案
你应该考虑CGColorSpace类和 CGColorSpaceCreateDeviceCMYK功能。
您可以使用 this 创建一个 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)
}
关于ios - 如何在 iOS 中将 PNG 图像转换为 CMYK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40331394/