从 PDF 中提取的 CMYK JPEG 显示为倒置

平面设计 adobe-photoshop pdf 厘米 jpg
2022-01-11 16:25:24

我不得不处理从 PDF 源中提取的 CMYK JPEG。PDF 是用 Photoshop 创建的。

问题是 Photoshop 使用“正常”值将 JPEG CMYK 数据存储在 PDF/EPS 中,而在独立 JPEG 中它存储反转值。因此,当 DCTDecode 流按字节提取并写入磁盘时,生成的 JPEG 文件会出现反转。

(实际的提取是由一个内部实用程序完成的,它只是从 DCTDecode 流中提取字节并将它们未经修改地写入以.jpg它基本上是二进制复制和粘贴结尾的文件。PDF 可用于重新过程,如果需要的话。)

由于图像必须保持其 JFIF 格式,有没有办法在提取的文件中放置一个标记,.jpg以使 Photoshop 以正确的编码打开它?该过程必须是无损的(不涉及进一步的熵编码)。

JPEG 已经包含APP14标记,删除它没有任何效果。

以下是来自libjpeg文档的引用:

“... Adob​​e Photoshop 似乎在 CMYK JPEG 文件中写入反转数据:0 表示 100% 墨水覆盖率,而不是您期望的 0% 墨水。... Photoshop 3.0 [和更高版本]...编写未反转的 YCCK在 EPS/JPEG 文件中...(但在裸 JPEG 文件中使用的数据极性不会改变...)"

3个回答

在 Adob​​e 论坛上,同样的问题是成功的结果:http ://forums.adobe.com/message/4271028

也许APP14标签不正确?APP14 标签的意义远不止于此。关于 JPEG 标签:http ://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/JPEG.html#Adobe

JPEG Adob​​e标签

“Adobe”APP14 段存储用于 DCT 过滤器的图像编码信息。可以使用额外的“Adobe”标签将该片段作为一个块复制或删除,但请注意,在删除所有元数据时默认不会删除它,因为它可能会影响图像的外观。

╔════════╦══════════════════╦══════════╦════════════════════════════════════════════╗
║ Index2 ║     Tag Name     ║ Writable ║               Values / Notes               ║
╠════════╬══════════════════╬══════════╬════════════════════════════════════════════╣
║      0 ║ DCTEncodeVersion ║ N        ║                                            ║
║      1 ║ APP14Flags0      ║ N        ║ Bit 15 = Encoded with Blend=1 downsampling ║
║      2 ║ APP14Flags1      ║ N        ║                                            ║
║      3 ║ ColorTransform   ║ N        ║ 0 = Unknown (RGB or CMYK)                  ║
║        ║                  ║          ║ 1 = YCbCr                                  ║
║        ║                  ║          ║ 2 = YCCK                                   ║
╚════════╩══════════════════╩══════════╩════════════════════════════════════════════╝

但这可能无济于事,我记得有人说这些私有标记不是为了指导 PDF 阅读器,而是应该是正确的解码数组。

魔法似乎是

/解码 0 1 0 1 0 1 0 1

这将反转颜色映射。(我想这是 libjpeg 中的一个标志,任何类似的工具都应该有类似的东西。)根据此处的 PDF 参考,解码数组在 PDF 中很常见: http ://partners.adobe.com/public/developer/en/pdf /PDF参考.pdf

我不知道您是否可以将这些解码数组添加到 PDF JPEG 中,或者您是否需要将其添加到内部工具的流处理中。我没有要处理的示例 PDF,所以我无法进行任何进一步的研究(此外,参考资料很大 - tl;博士 - 但你可能不得不......)

(免责声明:我没有要测试的图像 - 如果您可以通过文件共享站点共享这样的图像,我可以测试并在需要时进行调整以回答)。

该问题很可能与缺少 ICC 配置文件有关。

要嵌入(或转换)这样的配置文件,您可以使用 f.ex。ImageMagick 在不影响数据的情况下做这个损失文件。

ImageMagick:http:
//imagemagick.org/script/index.php

命令行实用程序可用于嵌入 ICC 配置文件:

convert cmyk.jpg -profile USWebCoatedSWOP.icc cmyk_w_icc.jpg

可选择将其转换为原生 RGB 颜色空间。

有关更多详细信息,请参见此处:
http ://www.imagemagick.org/Usage/formats/#color_profile

您可以从这里下载 ICC 配置文件:http:
//www.adobe.com/support/downloads/detail.jsp? ftpID=4074

您可以使用ImageMagick反转颜色

convert input.jpg -negate output.jpg

结果看起来不错,但可能不是无损的。至少在某些情况下文件大小似乎要小得多。