Ghostscript - EPS(带有透明背景的嵌入式 TIFF)到 PNG 的转换

Ghostscript - EPS (with embedded TIFF with transparent background) to PNG conversion

我正在尝试使用 GhostScript 将具有透明背景的嵌入 TIFF 的 EPS 文件转换为 PNG。我遇到的问题是 TIFF 图像的背景在 PNG 中变为白色。看起来像下面这样:

IncorrectPNG

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

CorrectPNG

我读到 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 文件(希望这个 link 有效):

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

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

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

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

颜色 space 是无关紧要的,事实上,PostScript 支持的唯一一种 'transparency' 在颜色 space 是 CMYK 时起作用,但当它的 RGB(当然不是 sRGB,它甚至不是 PostScript 颜色 space,你必须从 CIEBasedABC 制造它)

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

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

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

%AI9_PrivateDataBegin

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

现在存储在某处的信息部分内容是透明的。尽管 PostScript 无法表示,但 Illustrator 的内部格式可以。因此,当您从 Illustrator 写入 PNG 文件时,它知道该部分是透明的,并照原样写入。

但是,Ghostscript 受到文件的 PostScript 部分的限制,它无法读取 Illustrator 本机格式,因此以白色背景呈现图像。

'might'可以从 Illustrator 中保存不同类型的 EPS(可能是 3 级而不是 2 级,我注意到这是一个 2 级语言 EPS 文件),它复制了效果,但是从什么你在这里,没有任何标准的 PostScript 解释器可以为你提供你想要的结果。