Postscript、Ghostscript、GSView 中的色彩空间管理

Colorspace management in Postscript, Ghostscript, GSView

我正在尝试写一些 Postscript,以便在我可以发送到打印机的文件中生成图稿以打印一些标志。

打印机对 PDF 有各种要求,其中之一是他们应该使用 CMYK。

在我之前使用 Postscript 的所有过程中,我都使用了 setrgbcolor 但从未真正处理过色彩空间管理、ICC 配置文件等

我正在使用的一种颜色称为 RAL 1507 RAL 5017(交通蓝),具有我通过使用搜索引擎搜索颜色名称获得的 RGB 和 CMYK 值。我使用在线 RGB 到 CMYK 转换器进行了检查(没有指定的色彩空间配置文件)

虽然我会尝试 setcmykcolor 并创建了以下内容

%!PS-Adobe3.0
%
% Test use of CMYK in Postscript in preparation for creating a PDF/A-1a file
% for use by a commercial printer.
%
%%Pages: 1 

%%Page: One 1

/Hevetica-Bold 20 selectfont

0   90 255 div  140 255 div  setrgbcolor
100 100 250 100 rectfill
120 130 moveto 1 setgray (RGB: 0 90 140) show

100 255 div   60 255 div   0   10 255 div  setcmykcolor
100 200 250 100 rectfill
120 230 moveto 1 setgray (CMYK: 100 60 0 10) show

100 255 div   36 255 div   0   45 255 div  setcmykcolor
100 300 250 100 rectfill
120 330 moveto 1 setgray (CMYK: 100 36 0 45) show

0 0 1 setrgbcolor
100 400 250 100 rectfill
120 430 moveto 1 setgray (RGB: 0 0 255) show

showpage

%%EOF

(请原谅 DSC - 它的目的只是为了安抚 GSView)

MS-Windows 10 上的 GSView 5.0 与 Ghostscript 9.05 呈现如下

我曾预计至少有一种 CMYK 颜色会呈现得更接近底部 RGB 颜色。

所讨论的颜色是为印刷路标而设计的,所以如果它超出了商业印刷商使用的相关色域,我会感到很惊讶。

我需要做什么才能确信打印机打印我的 CMYK 值的结果接近我对 GSView 渲染 RGB 值的预期。

我不知道你从哪里得到 CMYK 值,但它们不是 (IMO) RGB 颜色的良好表示。改用 0.74 0.44 0 0.27 setcmykcolor。

您使用的数字 是合理的,如果您将它们视为百分比,而不是 0->255 范围内的值。 100% 青色、36% 洋红色、0% 黄色和 45% 黑色产生相当不错的匹配。我想知道这是不是你的错误?

那就是:

1 0.36 0 0.45 setcmykcolor

顺便说一句,我想你是指 RAL 5017,而不是红色的 1507。

除此之外,请记住您正在将 RGB 颜色转换为 CMYK,然后在 RGB 显示器上显示该 CMYK 值,这涉及将其 back 转换为 RGB , 因此会出现一些精度损失。

红皮书(PostScript 语言参考手册)中给出的非常简单的计算是青色 = 1 - 红色,洋红色 = 1 - 绿色,黄色 = 1 - 蓝色。然而,等值的 CMYK 通常不会产生黑色,因此我们还应用底色去除。

取C、M、Y的最小值,使该值成为K(黑色)。然后将C、M、Y各减去k,最终结果为:

c = 1 - 红色 m = 1 - 绿色 y = 1 - 蓝色 k = min (c, m, y)

青色 = c - k 洋红色 = m - k 黄色 = y - k 黑色 = k

对于您的值(映射到 0-1 的值,假设范围为 0-255); 红色 = 0 绿色 = 0.353 蓝色 = 0.549

c = 1 - 0 = 1 米 = 1 - 0.353 = 0.647 y = 1 - 0.549 = 0.451 k = 0.451

青色 = 1 - 0.451 = .549 洋红色 = 0.647 - 0.451 = 0.196 黄色 = 0.451 - 0.451 = 0 黑色 = 0.451

所以

0.549 0.196 0 0.451 setcmykcolor

这是一个廉价而愉快的计算,它打算由打印机中的 PostScript 解释器完成,因此选择快速而不是准确。但我认为您会发现它比您使用的值更接近。

为了正确的颜色 space 管理,您使用的 RGB 颜色将是特定 RGB space 中的值,例如显示器的颜色 space。然后,您将使用与该设备关联的 ICC 配置文件将 RGB 值转换为 CIE XYZ space(与设备无关的 space)中的值。然后您将选择一个特定的目标 CMYK space(例如,您要使用的打印机)并使用与目标设备关联的 ICC 配置文件进行相反的操作,将 XYZ 值转换为 CMYK 值。

在正确管理颜色的工作流程中,所有设备都以 ICC 配置文件为特征,结果是所有设备上的颜色将尽可能接近以达到相同。

当然,这取决于您是否具备所有特征,显然您没有。

请注意,专色(/PostScript 和 PDF 中的分色)有点 'different'。这些旨在使用特定油墨印刷,因此无需表征值,50% Pantone 1495 是绝对准确的值。

但是,如果您的打印机无法打印该颜色,例如您在本地 CMYK 打印机上进行快速检查,这些颜色通常被定义为具有 'alternate' 表示。理想情况下,这些将是 CMYK 值,它将打印出与所需颜色并不完全不同的东西。一些油墨制造商指定了一种替代表示法,这并不是实际颜色的特别好表示法,可以说是因为他们有许多油墨映射到 CMYK 中的相同颜色,所以他们使用 'off' 值来区分区别。众所周知,可疑的用户评论说,这样做是为了确保您在不使用制造商墨水的情况下无法进行像样的打印......