ImageMagick (Magick.NET) 的 Pdf 到 Jpg/Tiff 操作给了我错误的 CMYK 到 CMYK 颜色

ImageMagick (Magick.NET) 's Pdf to Jpg/Tiff operation gives me wrong color for CMYK to CMYK

问题

当转换为 Jpg/Tiff (CMYK) 时,输出图像与输入的相同区域具有不同的 CMYK 值:

历史

示例代码

using System;
using System.Collections.Generic;
using ImageMagick;

namespace Whosebug
{
    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"
        }
    }
}

输入

输出

通道分离代码(用于输出样本)

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。

images[0].Format = MagickFormat.Png;
images[0].Write(input[0..^4] + ".png");

目的

这是为了胶版设置目的,黑色保持纯黑色(以及一般的 CMYK 值)很重要,原因有很多,包括颜色质量、1 色印刷 (B&W) 等

终于

附加信息:

使用 Magick.NET-Q16-x64 v7.21.0 NuGet 包

好吧,Ghostscript 产生了正确的输出,所以我不得不猜测 ImageMagick 正在对它做些什么。或者可能使用了错误的设备。显然我不知道 IM 做了什么让 Ghostscript 将 PDF 文件转换为 'something else'.

这个:

gs -sDEVICE=jpegcmyk -o out.jpg cmyk.pdf

生成 JPEG 文件,其中每个矩形都是 C、M、Y 或 K 的纯阴影。使用 Adob​​e Photoshop 中的吸管工具进行检查。

dlemstra (Magick.net) 在 GitHub 中回答了我这个输出是因为 ImageMagick 的 PDF 解码器使用了选项 -dUseCIEColor,他们将在下一个版本中修复它。有关更多信息,请查看 GitHub Discussion.