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