2016-10-30 16 views
1

印刷用PDFに埋め込む必要のあるユーザー生成のPNG画像があります。印刷会社によって設定された制約の1つは、すべての画像がCMYK色空間にあることです。 PNG(またはそのPNGを含むUIImage)をCMYKに変換するにはどうすればよいですか?デフォルトでは、色空間はsRGBです。PNG画像をiOSのCMYKに変換するには?

答えて

1

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) 
} 
+0

それは動作しません。それは "とクラッシュします:CGBitmapContextCreate:サポートされていないパラメータの組み合わせ:詳細を表示するには、CGBITMAP_CONTEXT_LOG_ERRORS環境変数を設定してください" –

関連する問題