【问题标题】:Colorspace management in Postscript, Ghostscript, GSViewPostscript、Ghostscript、GSView 中的色彩空间管理
【发布时间】:2018-07-16 16:23:23
【问题描述】:

我正在尝试编写一些 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 值的期望。

【问题讨论】:

    标签: rgb postscript cmyk color-profile


    【解决方案1】:

    我不知道您从哪里获得 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 值,这涉及将其返回转换为 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 m = 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 解释器完成,因此选择它是快速的,而不是准确的。但我认为您会发现它比您使用的值更接近。

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

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

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

    请注意,专色(PostScript 和 PDF 中的/分色)有些“不同”。这些旨在使用特定墨水打印,因此无需表征这些值,50% Pantone 1495 是绝对准确的值。

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

    【讨论】:

    • 我尝试的一些值来自e-paint - 感谢您在解释这些数字时发现我的错误。我已经开始阅读 Adob​​e 技术说明 #5044,但我认为您给了我足够多的东西来获得我目前需要的结果。赞赏。
    猜你喜欢
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 2018-08-19
    • 2013-01-02
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多