Ghostscript:设置像素宽度,同时保持宽高比,EPS到PNG

时间:2015-10-05 22:25:48

标签: ghostscript vector-graphics postscript eps rasterizing

我阅读了使用文档,找不到任何方法输出X像素宽的图像,高度由宽高比决定。我需要栅格化大量的EPS文件,它们需要至少2400px宽。我目前的解决方法是使用-r标志设置一个通常足够高的分辨率,但是这使得许多图像比我需要的大得多。

我目前正在使用此命令:

gs -dNOPAUSE -sDEVICE=pngalpha -dEPSCrop -sOutputFile=./result.png -r500x500 -dEPSFITPAGE -dBATCH -dQUIET ./input.eps

我尝试过-g-dDEVICEWIDTH-dDEVICEHEIGHT-dFIXEDMEDIA-dFIXEDRESOLUTION-dFitPage的不同组合和设置,但是我无法理解。

我有一种感觉,可能需要某种类型的数学来简单地设置-r的正确值,这将产生所需的尺寸,但我不知道如何解决这个问题。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

您无法指定(从命令行)任何会修改一个维度并使另一个维度重新缩放的内容。

您可以通过PostScript编程来完成此操作。媒体大小请求由setpagdevice处理,您可以重新定义setpagedevice,以便我预处理媒体大小请求或创建一个修改媒体大小的BeginPage过程。

重新定义setpagedevice可能是最简单的。编写一个例程,检查所请求的宽度和高度,以及HWResolution的当前值。将其与已知目标值进行比较(如果需要,可以使用-d =存储在PostScript字典中。计算所需的比例因子并将其应用于请求的宽度和高度,适当地更改请求的值并将这些值传递给原始值setpagedevice定义。

这也排除了设置DEVICEWIDTHPOINTS,DEVICEHEIGHTPOINTS或FIXEDMEDIA的任何要求。