【问题标题】:Ghostscript ps to jpg output without white spaceGhostscript ps到jpg输出没有空格
【发布时间】:2012-11-28 13:51:38
【问题描述】:

我想要做的是使用 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

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

【问题讨论】:

    标签: jpeg ghostscript postscript


    【解决方案1】:

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

    使用 -dUseCropBox 去除多余的空白

    【讨论】:

    • -dUseCropBox 是我尝试过的唯一选项,它提供与 Acrobat Viewer 相同的视图。这应该是 IMO 接受的答案。
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

      使用 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
      

      【讨论】:

      • 注意 ps2epsi 方法使用 ghostscript 来渲染图像两次。它可以完成工作,但不是最有效的方式。
      猜你喜欢
      • 2018-07-18
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      • 2011-03-23
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多