我想要做的是将一个ps只是一个图像转换为jpg使用ghostcript这里是我开始的
gswin32c.exe -sDEVICE=jpeg -sOutputFile="test.png" example.ps
然而,当我运行这个时,jpg在右边和底部出现了很多空白区域
还有一张图片出来很大,有没有办法在ghostscript中裁剪出空白?
我试过这段代码
gswin32c.exe -sDEVICE=jpeg -dBATCH -dNOPAUSE -dSAFER -r72x72 -g200x900 -sOutputFile="test.jpg" example.ps
减小宽度,但高度仍然很大。任何解决方案?
答案 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