Ghostscript:将非常小的 eps 升级为大 jpg

Posted

技术标签:

【中文标题】Ghostscript:将非常小的 eps 升级为大 jpg【英文标题】:Ghostscript: Upscaling very small eps to large jpg 【发布时间】:2019-02-22 01:05:41 【问题描述】:

我正在使用 ghostscript 将 eps 文件光栅化为 jpg 格式。我正在努力并且似乎看不到一个明显的答案是如何正确地“升级”带有非常小的边界框的 eps 文件。示例:

%%BoundingBox: 0 0 71 47
%%HiResBoundingBox: 0 0 70.9961 46.0020

使用 dDEVICEWIDTH/HEIGHT 选项,像素比我们在那里表示的点(即 4 兆像素)要多得多。使用我们正在使用的相关选项的示例 gs 调用:

gs -sDEVICE=jpeg -dEPSFitPage -dJPEGQ=100 -dBATCH -r300 -g2458x1628 -sOutputFile=output.jpg input.eps

这会生成具有所需像素尺寸的 jpg,但它是高度像素化的,丢失了矢量的所有细节。我已经尝试了 ghostscript 文档中似乎可能相关的选项:

-r1000...
-dInterpolateControl=<-1 through 1000>
-dGraphicsAlphaBits=<1,2,4>

这些似乎都不会对生成的 jpg 的像素化产生任何影响。这种效果似乎与边界框表示的点直接相关,即一个点 == 一个像素,任何放大都会导致质量/像素的损失。

我很困惑为什么会这样。在我看来(例如), eps 中的矢量信息应该能够缩放到任意数量的像素。它可以?我错过了一些明显和愚蠢的东西吗?

【问题讨论】:

我建议尝试将 EPS 升级为另一个 EPS,然后将该 EPS 转换为 JPEG。 继续尝试。除输出设备外,所有事物都相同,除了 eps 形式外,我得到了类似的结果。任何可以通过您所知道的“透明度扁平化”设置的 Ghostscript 技巧?我认为问题在于,由于原始ps实际上不支持透明度,我从ghostscript获得的只是位图预览,所以似乎没有办法解决它。除非我们以某种方式解释了私人插画师数据/文件。 【参考方案1】:

你没有提供EPS文件,所以很难查明问题,这里有一些想法:

1) 不要乱用 JPEG 质量,事实上,不要使用 JPEG。写入无损格式,如 TIFF。这将防止 JPEG 量化与输出混淆,并消除可能的问题。

2) 检查 EPS 以查看它是否包含图像。这对我来说似乎是最有可能的问题。 PostScript 程序可以包含图像数据和矢量,如果您的 EPS 包含低分辨率图像,那么没有什么可以帮助您,结果将受到输入中图像样本数量的限制。

【讨论】:

是的,这很有趣。我没有提供 eps,因为我假设它没有什么特别之处。它是具有大量渐变的复杂图像,但没有实际的图像/栅格数据。我做了一个实验性的,里面只有一个非常简单的渐变圆,大小相同,它似乎可以按比例放大而没有质量损失。有问题的文件不属于我,所以我得看看我是否可以分享它。 这似乎与保存原始文件时的透明度设置有关。我添加了尽可能接近答案的答案。感谢您抽出宝贵时间回复。 对,PostScript 不支持透明度,所以如果你的原件有透明度,那么它必须转换为图像。我敢打赌 EPS 文件确实包含图像数据,但可能很难说,因为 PostScript 是一种编程语言,所以你可以用很多不同的方式来包装它。正如你上面所说,如果是这种情况,那么损坏在它到达 Ghostscript 之前就已经完成了,它无法撤消。【参考方案2】:

事实证明,这与最初保存文件时选择的“透明度展平”设置有关。我正在使用 illustrator,这些范围从“低”到“复杂”预设(“中”是默认设置)。

"Medium" settings

"Complex" settings

在使用默认“中等”设置保存的透明效果的非常小的 eps 中,生成的栅格最终质量非常低,并且 ghostscript 似乎对此无能为力。如果您选择“复杂”,则光栅具有完整的质量/分辨率。如果您将图稿放大到与您想要的像素大致相同的点数,则“中等”设置会产生与使用“复杂”设置的光栅质量相当的光栅。

在创建文件后(对我而言)似乎没有任何办法可以解决这个问题。

【讨论】:

以上是关于Ghostscript:将非常小的 eps 升级为大 jpg的主要内容,如果未能解决你的问题,请参考以下文章

Ghostscript:将 EPS 转换为 PNG 时,有时质量会失败

Ghostscript:将 PDF 转换为 CMYK EPS

为啥使用 pdfmark /BP、/EP、/SP 的 ghostscript 快得多?

如何在ghostscript中将svg、eps和ai转换为png

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

如何告诉 Ghostscript 在从 eps 到 tiff 的转换中不要使用剪切路径?