簡體   English   中英

如何在 iOS 中將 PNG 圖像轉換為 CMYK?

[英]How to convert PNG image to CMYK in iOS?

我有一組用戶生成的 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)
}

根據https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html#//apple_ref/doc/uid/TP30001066-CH203 “支持的像素格式”表,您必須使用

    let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.none.rawValue)

正確創建上下文

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM