2

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

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

这减少了宽度,但高度仍然很大。有什么解决办法吗?

4

3 回答 3

2

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

使用 -dUseCropBox 删除多余的空白

于 2013-07-10T07:24:46.747 回答
1

首先,您需要设置“正确”的媒体尺寸。有几种方法,包括您已经发现的 -g 开关。

底部的空白(可能)是由文件的制作方式引起的,PostScript 坐标从左下角开始,随着页面的上移和右移而增加。许多计算机系统从左上角开始,随着您的下降而增加。为了模仿这一点,文档可能会“翻转”垂直方向(这样当您向下浏览页面时值会增加),然后偏移初始点,以便它从设计的媒体的左上角开始。

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

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

于 2012-12-11T08:28:14.737 回答
1

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

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

如果您没有后两者,请参阅http://netpbm.sourceforge.net/ 。

我现在不记得 pstoeps 是否需要切换来强制计算边界框,但手册页应该很清楚。

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

与 ghostscript 一起打包的转换器是 ps2epsi ,它不会通过管道传输到标准输出,所以你这样做:

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
于 2012-12-11T13:10:45.180 回答