13.42 psconvert

官方文档:psconvert
简介:将 GMT 生成的 PS/EPS 文件转换为其他图片格式

注解

本模块原名为 ps2raster ,v5.2.1 版本起更名为 psconvert

该模块通过调用 GhostScript 将 PS/EPS 文件转换为其他图片格式,包括BMP、EPS、JPEG、PDF、PNG、PPM、SVG、TIFF 格式。

13.42.1 必选选项

psfiles

要转换格式的 PS 文件名

默认情况下,转换后的文件与转换前的文件有相同的文件名,文件后缀由文件格式决定。

如下命令会将PS文件转换成JPG格式:

gmt psconvert test.ps
gmt psconvert test1.ps test2.ps map*.ps

13.42.2 可选选项

-A[u][<margins>][-][+p<paint>][+p[<pen>]][+r][+s[m]|S<width>[<u>]/<height>[<u>]]

对输出的图片做裁边

默认情况下,转换得到的图片的大小由PS文件的纸张尺寸决定。通常画图的时候是不会把一张A4纸画满的,所以在图片周围就会出现多余的白色部分。

-A 选项会对PS文件进行裁剪,仅保留其中有绘图的部分:

gmt psconvert -A test.ps

-Au 会先将GMT的时间戳去掉再裁剪。

默认的裁剪方式会将图片裁剪到尽可能小。如果想要图片周围有额外的白色区域,可以加上额外的边距 <margins> 。其中 <margins> 可以取:

  1. 一个数,四条边的额外边距相同,如 -A0.5c
  2. 两个数字,分别指定X和Y方向的额外边距,如 -A0.5c/1c
  3. 四个数字,分别指定左右下上四条边的边距,如 -A0.5c/0.5c/0.5c/0.5c

-A+s 可以指定最终图片的尺寸:

  • -A+s<width> 指定最终生成的图片的宽度,高度自动决定。程序会对图片做插值以保证 -E 的值
  • -A+S<scale> 指定图片的缩放比例
  • -A+sm<width>/<height> 设置图片所允许的最大尺寸。若原始图片的宽度不大于 <width> 则使用图片的原始尺寸, <height> 同理。

如下命令会生成一个宽为5厘米的图片:

gmt psconvert -A+s5c test.ps
  • -A+r 使得在计算边界时使用round函数而不是ceil函数,这会对裁剪造成极其微小的区别,仅当要处理非常小的图片时才需要使用。
  • -A+g<paint> 为BoundingBox指定填充色
  • -A+p<pen> 为BoundingBox指定边框颜色,默认颜色为 0.25p,black
  • -A- 覆盖 -W 选项中自动设置的 -A
-C<gs_options>

传递给 GhostScript 的选项

该选项用于在调用 GhostScript 时传给 GhostScript 额外的选项,若要额外给 GhostScript增加多个选项,可重复使用 -C 命令。

在Windows下,若PS文件中含中文,则可能需要使用 -C 选项告诉ghostscript字体路径:

gmt psconvert -C-sFONTPATH=C:\Windows\Fonts chinese.ps
-D<outdir>

设置输出目录

默认情况下,会在PS文件同一目录中生成其他图片文件,使用 -D<outdir> 选项可以指定输出目录, -D. 表示在当前目录输出。需注意,输出目录必须已存在,否则会报错。

-E<dpi>

设置图片精度

值越大,图片越清晰,文件也越大。PDF格式默认值为720,其他格式默认值为300,单位为dpi。

gmt psconvert -Tj -E600 test.ps

说明:

  1. EPS是矢量图片格式,-E选项对其无效
  2. PDF是矢量图片格式,-E选项对其中的pattern和字体有效
-F<out_name>

指定输出的文件名

默认情况下,该命令会直接使用输入的PS文件名,并修改其后缀作为输出文件的文件名。比如 test.ps 转换出的图片则为 test.jpgtest.png 之类的。

-F 选项可强制指定输出文件名,文件后缀由输出的文件格式自动决定:

gmt psconvert -Tf -Fout test.ps
-G<ghost_path>

指定GhostScript可执行文件的路径

psconvert 底层调用了 GhostScript 来实现PS到其他格式的转换,因而成功转换的前提是必须能够找到 GhostScript 的可执行文件。 -G 选项即用于显式指定 ghostscript可执行文件的路径。

说明:

  1. Linux下一般不需要设置ghostscript的路径,除非你自己重新编译了gs并安装到了非标准路径下
  2. Windows下,一般也不需要使用该选项,程序会自动从注册表里获取路径信息
  3. 如果从注册表中获取路径失败,则必须指定 -G 选项,例如 -Gc:\programs\gs\gs9.02\bin\gswin64c
-I
Enforce gray-shades by using ICC profiles. GhostScript versions >= 9.00 change gray-shades by using ICC profiles. GhostScript 9.05 and above provide the ‘-dUseFastColor=true’ option to prevent that and that is what psconvert does by default, unless option -I is set. Note that for GhostScript >= 9.00 and < 9.05 the gray-shade shifting is applied to all but PDF format. We have no solution to offer other than upgrade GhostScript.
-L<listfile>
<listfile> 中包含要转换的所有PS文件名
-P

强制转换后的图片为Portrait模式。

若PS文件在绘图时使用了 -P 选项,则psconvert的 -P 选项无效;若PS文件在绘图时未使用 -P 选项,则psconvert的 -P 选项会将图片旋转90度。

-Q[g|t][1|2|4]
Set the anti-aliasing options for graphics or text. Append the size of the subsample box (1, 2, or 4) [4]. Default is no anti-aliasing (same as bits = 1).
-S
在执行ghostscript命令后,将具体的命令打印到标准错误流中,且保留转换过程中的所有临时文件。该选项主要用于调试。
-Tb|e|E|f|F|j|g|G|m|s|t

指定要转换的图片格式。可以接如下值:

  • b :BMP;
  • e :EPS;
  • E :带有PageSize命令的EPS;
  • f :PDF;
  • F :多页PDF;
  • j :JPEG(默认值);
  • g :PNG;
  • G :透明PNG;
  • m :PPM;
  • s :SVG;
  • t :TIFF;

说明:

  1. gG 的区别在于前者背景色为白色,后者背景色为透明;
  2. 对于 bjgt` 格式可以在其后加 ``- 将PS文件转换为灰度图;
  3. EPS格式可以与其他格式合在一起使用。比如 -Tef 会同时生成EPS和PDF文件。除此之外,该命令一次只能转换一种格式,比如 -Tbf 则只会生成PDF格式(即以 -T 选项中的最后一个格式为准)
  4. -TF 会将多个PS/PDF文件转换并合并成一个多页的PDF文件,需要使用 -F 选项指定输出的文件名

转换为PDF格式:

gmt psconvert -Tf test.ps

转换为JPG格式的灰度图:

gmt psconvert -Tj test.ps

利用一堆PS文件生成一个多页PDF:

gmt psconvert -TF -Fout.pdf *.ps
-W
见官方文档
-Z
转换完成后删除输入的PS文件。若转换失败,输入的PS文件不会被删除。

13.42.3 其他

  1. 转换为PDF、PNG时使用DEFALTE压缩;转换为TIFF时使用LZW压缩;
  2. 对于小dpi的图件而言,可以使用 -Qt4 -Qg4 使得文字和线条看上去更加尖锐;
  3. psconvert还可以用于其他命令生成的PS文件;

13.42.4 FAQ

  1. 错误信息:

    GMT PS format detected but file is not finalized. Maybe a -K in excess? No output created.
    

    出现这种错误的最常见原因是最后一个绘图命令里多了一个 -K ,即本该只使用 -O 选项关闭PS文件的,但却使用了 -K -O 选项。

13.42.5 BUGS

  1. Windows下会自动为文件名加双引号,导致无法找到要转换的PS文件(v5.1.1)
  2. 使用 -A 选项时, -C 选项无效,导致无法在Windows转换含中文的PS文件(v5.1.1)
  3. 不能使用 -F 选项,即不能生成多页PDF(v5.1.2)
  4. -Z 选项无效(v5.2.1)