ImageMagick (Magick.NET) 's Pdf to Jpg/Tiff operation gives me wrong color for CMYK to CMYK
问题
当转换为 Jpg/Tiff (CMYK) 时,输出图像与输入的相同区域具有不同的 CMYK 值:
- (100)C 变成 (76)C, (7)M, (14)Y
- (100)M 变成 (87)M, (5)Y
- (100)Y 变成 (85)Y
- (100)K 变成 (72)C, (67)M, (67)Y, (88)K
- 纯白保持 (0)C, (0)M, (0)Y, (0)K
历史
- 我最后一个错误的问题
- 关于 IM 的一个不一定相关的问题和第二个问题。
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | using System; using System.Collections.Generic; using ImageMagick; namespace stackOVERFLOW { class Sample { public static void Start() { Rasterize("SOSample.pdf"); } static void Rasterize(string input) { var settings = new MagickReadSettings { Density = new Density(300, 300), ColorSpace = ColorSpace.CMYK }; var images = new MagickImageCollection(); images.Read(input, settings); images[0].Format = MagickFormat.Jpg; //or .Tiff images[0].Write(input[0..^4] +".jpg"); // or".tiff" } } } |
输入
- 输入 PDF(带有纯 C、M、Y、K 和白色区域的 CMYK)
输出
- JPG(分隔:C | M | Y | K)
通道分离代码(用于输出样本)
1 2 3 4 5 6 7 8 | List<String> colors = new List<String> {"C","M","Y","K" }; int n = 0; foreach (IMagickImage<ushort> channel in images[0].Separate(Channels.All)) { channel.Negate(); channel.Write(input[0..^4] +"_" + colors[n] +".jpg"); n++; } |
问题解读
转成PNG(RGB)颜色的时候看RGB是对的,感觉就是在CMYK之前转成RGB了。
1 2 | images[0].Format = MagickFormat.Png; images[0].Write(input[0..^4] +".png"); |
目的
用于胶版设置目的,黑色保持纯黑色(以及一般的 CMYK 值)很重要,原因有很多,包括颜色质量、1 色印刷(B
好吧,Ghostscript 产生了正确的输出,所以我不得不猜测 ImageMagick 正在对它做些什么。或者可能使用了错误的设备。显然,我不知道 IM 是如何让 Ghostscript 将 PDF 文件转换为"其他东西"的。
这个:
gs -sDEVICE=jpegcmyk -o out.jpg cmyk.pdf
生成一个 JPEG 文件,其中每个矩形都是 C、M、Y 或 K 的纯阴影。使用 Adob??e Photoshop 中的吸管工具进行检查。
dlemstra (Magick.net) 在 GitHub 上回答了我这个输出是因为 ImageMagick 的 PDF 解码器使用了选项