Ghostscript ps到jpg输出没有空格

时间:2012-12-11 03:03:19

标签: jpeg ghostscript postscript

我想要做的是将一个ps只是一个图像转换为jpg使用ghostcript这里是我开始的

gswin32c.exe -sDEVICE=jpeg -sOutputFile="test.png" example.ps

然而,当我运行这个时,jpg在右边和底部出现了很多空白区域

enter image description here

还有一张图片出来很大,有没有办法在ghostscript中裁剪出空白?

我试过这段代码

gswin32c.exe -sDEVICE=jpeg  -dBATCH -dNOPAUSE -dSAFER -r72x72 -g200x900 -sOutputFile="test.jpg" example.ps

减小宽度,但高度仍然很大。任何解决方案?

3 个答案:

答案 0 :(得分:2)

gswin32c.exe -sDEVICE = jpeg -dUseCropBox -sOutputFile =“test.png”example.ps

使用-dUseCropBox删除多余的空格

答案 1 :(得分:1)

首先,您需要设置'正确'的媒体大小。有几种方法,包括你已经发现的-g开关。

底部的空白区域(可能)是由文件制作方式引起的,PostScript坐标从左下角开始,随着向上和向右上升而增加。许多计算机系统从左上角开始,随着时间的推移而增加。为了模仿这个,文档可能“翻转”垂直(以便在页面向下时值增加)然后偏移初始点,使其从设计用于的媒体的左上角开始。

您可以使用-c .... -f开关将PostScript添加到命令行,您需要添加某种垂直平移来移动成像部分。根据原始PostScript中的翻译方式,您可能需要添加正偏移或负偏移。我会尝试0 -100翻译,然后看看图像在输出上的移动方式。

或者,将文件转换为PDF(使用pdfwrite设备)并应用CropBox。

答案 2 :(得分:1)

使用pstoeps找到一个紧密的边界框,然后使用pbmtools转换为jpg, 类似的东西:

pstoeps file.ps | pstopnm - | pnmtojpg - > file.jpg

如果你没有后两个,请参阅http://netpbm.sourceforge.net/

我现在不记得,如果pstoeps需要一个开关来强制计算边界框,但是手册页应该非常清楚。

编辑:在没有实际尝试的情况下发布的apolgies ..

使用ghostscript打包的转换器是ps2epsi,它不会传递到stdout, 所以你这样做:

ps2epsi file.ps

这会创建file.epsi。然后运行:

pstopnm -portrait -xborder 0 -yborder 0  file.epsi -stdout | pnmtojpeg > file.jpeg

第二种想法更好的另一种方法(跳过eps转换)是这样的:

pstopnm -portrait  file.ps -stdout | pnmcrop | pnmtojpeg > file.jpeg