CMYK/RGB 颜色空间如何在 pdf 和图像中工作,它如何影响它们的相互转换?

Deb*_*rua 2 php pdf rgb cmyk imagick

我有一项任务,我需要获取打印产品模型的 PDF,并检查它们的分辨率、大小和色彩空间。我需要将 Imagick 与 PHP 结合使用才能完成此任务。

打印这些 PDF 的印刷厂只有 CMYK 打印机,因此,上传的 PDF 需要具有 CMYK 颜色。但我不清楚颜色空间(CMYK/RGB)如何在 PDF 或 jpeg/png 图像中工作。所以,我有几个问题希望能帮助我更好地理解这件事并完成任务:

  1. 据我所知,我们可以绘制对象或将图像添加到 pdf 中,它们的颜色可以定义为 RGB 或 CMYK,但这如何影响整个 PDF 的色彩空间?

  2. 是否可以在 php 中检查 PDF 的颜色空间,而不将其转换为 jpeg/png?

  3. 如果我在 CMYK 或 RGB 颜色空间中定义了 PDF 中的图像并使用 Imagick 将 PDF 转换为 jpeg/png,除非特别提及,否则转换后的图像中的颜色空间是否保持不变Imagick::transformImageColorspace()

  4. 关于颜色空间如何工作、如何定义和检测以及当文件从一种 mime 类型转换为另一种类型时它们如何受到影响的简短背景信息。

PS:我正在将 PDF 转换为 jpeg/png 并检查转换后文件的颜色,如下所示,但false无论我使用什么 pdf ,它总是给出。

$img = new imagick(self::$_imgArray[0]);
if($img->getimagecolorspace() == imagick::COLORSPACE_CMYK)
    echo "Image is in CMYK";
Run Code Online (Sandbox Code Playgroud)

小智 5

我有一项任务,我需要获取打印产品模型的 PDF,并检查它们的分辨率、大小和色彩空间。

PDF 页面没有分辨率(尽管页面上的图像有)。它确实有一个“物理”尺寸,默认为 Letter 尺寸。PDF 单位默认为 1/72 英寸。如果 PDF 页面包含纯矢量数据,那么它在任何分辨率下看起来都很棒。

有关更多详细信息,请参见下文,但单个 PDF 页面/文档可以包含灰色、RGB、CMYK、LAB 等颜色空间中的一种或多种。

  1. 但这如何影响整个 PDF 的色彩空间?

它没有,PDF 本身没有整体色彩空间。通常,PDF 处理器会将所有图形转换为目标色彩空间,例如,Chrome 在某个时候会将所有内容都显示为 RGB,因为它正在绘制到屏幕上。

  1. 是否可以在 php 中检查 PDF 的颜色空间,而不将其转换为 jpeg/png?

当然,尽管单个 PDF 可能包含灰度、rgb、cmyk、实验室、分色等。同样,PDF 文件中没有一个颜色空间。

  1. 如果我在 PDF 中定义了 CMYK 或 RGB 颜色空间中的图像,并使用 Imagick 将 PDF 转换为 jpeg/png,除非 Imagick::transformImageColorspace() 特别提到,否则转换后的图像中的颜色空间是否保持不变?

这将取决于进行转换的软件。由于 PNG 不支持 CMYK,那么至少任何 CMYK 都会被转换。究竟会发生什么取决于软件、设置、目标输出格式以及支持的内容。

  1. 关于颜色空间如何工作、如何定义和检测以及当文件从一种 mime 类型转换为另一种类型时它们如何受到影响的简短背景信息。

请参阅此处的第 8.6 节:https : //www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf 这是另一个很好的链接 https://www.color-management-guide.com /color-spaces.html