0

我正在尝试使用 GhostScript 将具有透明背景的嵌入式 TIFF 的 EPS 文件转换为 PNG。我遇到的问题是 TIFF 图像的背景在 PNG 中变为白色。它如下所示:

不正确的PNG

当我从 Adob​​e Illustrator 导出时,结果是正确的:

正确PNG

我读到EPS没有透明度,只有标记和未标记的区域。我想知道是否有一个我错过的调用可以通过类似于 Illustrator 的 Ghostscript 创建 PNG?或者,如果有任何其他选择不只是通过 ImageMagick 用透明度替换白色?

我正在使用 Windows 并安装了 Ghostscript 9.25。这是我尝试过的命令(其中之一):

-q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -sDEVICE=pngalpha -r300 -dEPSCrop NamePlatePNG.png NamePlate.eps


如果需要,我可以将 EPS 文件发给您。任何帮助将不胜感激,谢谢!

更新:这是 EPS 文件(希望此链接有效):

https://drive.google.com/open?id=1m4HHGLoPe0jdWkx1Oghe7ttiXPldZnJs

另外,我应该提到我上传的图像只是在图像编辑器中打开的 PNG 的屏幕截图。方格部分确实是完全透明的 Alpha 通道。我试图轻松地强调差异。

4

1 回答 1

0

您的文件看起来不像是透明的,它看起来像是蒙版的,可能带有模板蒙版,可能是色键。没有看到文件,我无法确定。

您是正确的,PostScript(以及因此 EPS)不支持透明度,但它确实支持一些具有类似效果的功能。

颜色空间是无关紧要的,事实上,PostScript 中唯一支持的“透明度”在颜色空间是 CMYK 时有效,但当它的 RGB(当然不是 sRGB,它甚至不是 PostScript 颜色空间时,你有从 CIEBasedABC 制造)

据我所见,您使用的命令行是正确的,但正如我所说,如果没有看到实际的 EPS 程序,我无法说太多。

[编辑] 所以 Ghostscript 渲染是正确的,这就是你的 EPS 文件中的内容,那里没有任何类型的透明度。那么 Illustrator 是如何制作透明 PNG 的呢?答案是 Illustrator 没有使用 EPS 文件的 PostScript 部分。

在 EPS 文件的大约 1/3 处,您会看到一行内容:

%AI9_PrivateDataBegin

接下来是 Adob​​e Illustrator 文件格式。当 AI 读取文件时,它会找到该行,丢弃文件的 PostScript 部分,并从文件中以该注释开头的部分读取内容的 AI 表示。

现在存储在某处将有部分内容是透明的信息。虽然 PostScript 不能表示,但 Illustrator 的内部格式可以。因此,当您从 Illustrator 编写 PNG 文件时,它会知道该部分是透明的并照此写入。

然而,Ghostscript 受文件的 PostScript 部分的限制,它无法读取 Illustrator 原生格式,因此使用白色背景渲染图像。

“可能”可以从 Illustrator 中保存不同类型的 EPS(可能是 3 级而不是 2 级,我注意到这是一个语言级别 2 的 EPS 文件),它复制了效果,但是从你这里的内容来看,没有标准 PostScript 解释器可以做的任何事情都会给你想要的结果。

于 2018-12-04T00:36:43.457 回答