✍️ 田冬冬 , 邓山泉 , 陈箫翰  •  📅 2026-01-10

psconvert

官方文档:

psconvert

简介:

将 GMT 生成的 PS/EPS 文件转换为其它图片格式

psconvert 模块通过调用 Ghostscript 将 PS/EPS 文件转换为其它图片格式,包括BMP、EPS、JPEG、PDF、PNG、PPM、TIFF 格式。 输入文件名从命令行或包含文件名列表的文件中读取。生成图像的大小由 BoundingBox(或 HiResBoundingBox)决定。可以选择先计算一个紧凑的 (HiRes)BoundingBox。 另外也可以计算 ESRI 类型的世界文件 (world files),用于为 TIFF 文件提供地理参照,并使其被识别为 GeoTIFF。

注意:如果 PostScript 文件调用了任何 Adobe PDF 透明度扩展,且 PDF 不是选定的输出格式, 则该文件将首先被转换为临时 PDF 文件(以使透明度生效),然后再将 PDF 转换为所需的输出格式。

语法

gmt psconvert psfile(s) [ -A[+r][+u] ] [ -Cgs_option ] [ -Doutdir ] [ -Eresolution ] [ -Fout_name ] [ -Gghost_path ] [ -Hscale ] [ -I[+mmargins][+s[m]width[/height]][+Sscale] ] [ -Llist ] [ -Mb|fpslayer ] [ -N[+ffade][+gbackground][+kfadecolor][+p[pen]] ] [ -Q[g|p|t][1|2|4] ] [ -S ] [ -Tb|e|E|f|F|j|g|G|m|t[+m][+qquality] ] [ -V[level] ] [ -W[+aaltmode[alt]][+c][+fminfade/maxfade][+g][+k][+lminLOD/maxLOD][+nlayername][+ofoldername][+tdocname][+uURL] ] [ -Z ] [ --PAR=value ]

必须选项

psfiles

要转换格式的 PS 文件名

默认会在当前目录下生成与与原始 PS 文件相同文件名的新格式文件,文件后缀由文件格式决定。 可以使用 -F 设置文件名,使用 -D 设置文件输出目录。

可选选项

-A
-A[+r][+u]

根据图片内容的大小对画布做裁剪,将 BoundingBox 和 HiResBoundingBox 调整为图像内容所需的最小值。可以使用以下两个附加选项:

  • +r :在计算图片大小时,对 HighResBoundingBox 进行“四舍五入” ( round 函数) 而非使用 ceil 函数。 这个操作虽然违反了 Adobe 的规范,但在创建一像素之差都很重要的极小图像时非常有用。如果使用了 -V,还会报告图片的最终尺寸。

  • +u :首先移除任何由 GMT 生成的时间戳(即由 -U 设置的时间戳)。

-C
-Cgs_option

额外传递给 Ghostscript 的选项

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

-D
-Doutdir

设置输出目录

默认情况下,会在PS文件同一目录中生成其他图片文件,使用 -D 选项 可以指定输出目录。-D. 表示在当前目录输出。

-E
-Eresolution

设置图片精度

值越大,图片越清晰,文件也越大。PDF格式默认值为720,其他格式默认值为300,单位为dpi。 注意 :Ghostscript 限制光栅图像的最终宽度和高度像素尺寸必须小于或等于 65536。

-F
-Fout_name

指定输出的文件名

默认使用使用输入的PS文件名,并修改其后缀作为输出文件的文件名。 比如 test.ps 转换出的JPG格式的图片则为 test.jpg

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

-G
-Gghost_path

指定 Ghostscript 可执行文件的路径

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

说明:

  • Linux 下一般不需要设置 Ghostscript 的路径,除非你自己重新编译并安装到了非标准路径下

  • Windows 下,一般也不需要使用该选项,程序会自动从注册表里获取路径信息

  • 如果从注册表中获取路径失败,则必须使用 -G 选项指定路径,如 -GC:\Program Files\gs\gs10.06.0\bin\gswin64c

-H
-Hscale

由于将 PostScript 帧光栅化为光栅图时使用的单位点数(dots-per-unit)有限,将要素量化为离散像素会导致舍入误差。 抗锯齿设置 -Q 可以缓解部分影响,但该设置仅对线条和文本有效。 使用本选项通过指定 scale,可以临时将有效单位点数增加 scale 倍进行光栅化,最后再在结尾按相同比例对图像进行降采样。 scale 越大,生成的光栅图越平滑。由于处理时间随 scale 增加而增加,建议尝试使用 2-5 范围内的值。 请注意,当原始数据的分辨率远高于光栅像素尺寸时,光栅图像也会受到量化误差的影响。此时可使用本选项平滑结果以避免锯齿 [默认不进行降采样]。

-I
-I[+mmargins][+s[m]width[/height]][+Sscale]

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

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

gmt psconvert -A test.ps

默认的裁剪方式会将图片裁剪到尽可能小。如果想要图片周围有额外的白色区域, 可以使用 +mmargins 指定额外的空白量。其中 margins 可以取:

  • 一个数,表示四条边的额外边距相同,如 -I+m0.5c

  • 两个数字,表示分别指定X和Y方向的额外边距,如 -I+m0.5c/1c

  • 四个数字,表示分别指定左右下上四条边的边距,如 -I+m0.5c/0.5c/0.5c/0.5c

-I+s 可以直接指定最终图片的尺寸:

  • -I+swidth 指定最终生成的图片的宽度,高度自动决定。程序会对图片做 插值以保证 -E 设置的DPI值

  • -I+Sscale 指定图片的缩放比例

  • -I+smwidth/height 设置图片所允许的最大尺寸。若原始图片的宽度 不大于 width 则使用图片的原始尺寸,height 同理。

-L
-Llistfile

listfile 是 ASCII 文件,内容是要转换的所有 PS 文件的文件名列表

-M
-Mb|fpslayer

将当前的 psfile 夹在背景图 -Mbpslayer_1 和前景图 -Mfpslayer_2 这两个 PostScript 绘图之间。 也可以只有前景或背景其中之一。这些文件应为独立的绘图,并且在堆叠时能够相互对齐。

-N
-N[+ffade][+gbackground][+kfadecolor][+p[pen]]

为裁剪后的图片增加填充色、淡化以及绘制边框

  • +ffade :附加 fade 将整个图片向 fadecolor [默认为black] 进行淡化。 fade 取值为0到100,默认不淡化,即取值为 0。

  • +gbackground :为图片增加背景填充色 background

  • +kfadecolor :如果设置了 +f,则附加 fadecolor 以设置淡化颜色 [black]。

  • +p[pen] :附加 pen 指定画笔属性绘制图片边框(不指定则使用默认画笔 0.25p,black)。

-Q
-Q[g|p|t][1|2|4]

设置图片(g) 或文字(t) 的抗锯齿选项。附加子采样框的大小(1、2 或 4)[默认为 4]。 对于矢量格式,默认不进行抗锯齿(相当于 bits = 1)。对于光栅格式,默认设置为 -Qt4 。对于透明PNG格式而言,默认参数是 -Qt4 -Qg2。 这些默认值可以手动更改。可以使用 -Qp 开启 GeoPDF 的生成(还需同时使用 -Tf )。

-S
-S

在执行Ghostscript命令后,将具体的命令打印到标准错误流中,且保留转换过程中的所有临时文件。该选项主要用于调试。

-T
-Tb|e|E|f|F|j|g|G|m|t[+m][+qquality]

指定要转换的图片格式。

可以取值:

  • b :BMP

  • e :EPS

  • E :带有 PageSize 命令的EPS

  • f :PDF

  • F :多页PDF

  • j :JPEG(默认值)

  • g :PNG(不透明背景)

  • G :PNG(透明背景)

  • m :PPM

  • t :TIFF

说明:

  • 对于 bjgt,可以附加 +m 以获取单色(灰度)图像。

  • 对于 j,可以附加 +qquality ,在 0-100 范围内更改 JPEG 质量 quality [默认 90]。

  • gG 的区别在于前者背景色为白色,后者背景色为透明。

  • EPS 格式可以与其他格式合在一起使用。比如 -Tef 会同时生成 EPS 和 PDF 文件。除此之外,该模块一次只能转换一种格式,比如 -Tbf 则只会生成 PDF 格式。

  • -TF 会将多个 PS/PDF 文件转换并合并成一个多页的 PDF 文件,需要使用 -F 选项指定输出的文件名。

转换为PDF格式:

gmt psconvert -Tf test.ps

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

gmt psconvert -TF -Fout *.ps
-V
-V[level]

设置 verbose 等级 [w]。 (参数详细介绍)

-W
-W[+aaltmode[alt]][+c][+fminfade/maxfade][+g][+k][+lminLOD/maxLOD][+nlayername][+ofoldername][+tdocname][+uURL]

编写一个 ESRI 类型的世界文件 (world file),使能够识别该文件的软件将 .tif 文件视为 GeoTIFF。 然而请注意,结果会根据图像内容以及是否使用了 -B 选项而有所不同。 -B 选项的问题在于它会创建边框,且极有可能包含标注。 这会在地图数据范围之外引入像素,从而导致地图范围的估算出现偏差。 为了避免这个问题,请使用 --MAP_FRAME_TYPE=inside 选项, 该选项会将所有标注和刻度绘制在图像内部,因此不会影响坐标计算。 此外,还要注意绘图任一边缘为纯白色的情况,因为 Ghostscript 会“吞掉”这些白色像素, 导致算法彻底失败。在这种情况下,必须使用 -B 选项或使用稍微偏离白色的颜色。

结合 -V 选项时,会在屏幕上打印 gdal_translate 命令 (gdal_translateGDAL 软件包 中的一个命令行工具), 该命令读取光栅图 + 世界文件并创建一个真正的 GeoTIFF 文件。 附加 +g 以对 gdal_translate 进行系统调用并立即创建 GeoTIFF 图像。 输出文件将具有 .tiff 扩展名。

世界文件的命名遵循在文件扩展名中插入 'w' 的惯例。 因此,如果输出是 tif (-Tt),则世界文件为 .tfw;对于 jpeg,得到 .jgw,依此类推。 注意:此选项会自动设置 -A-P。附加 +c 裁剪图像。

附加 +k 以创建一个极简的 KML 文件,以便在 Google Earth 中加载图像。 注意,要使此选项生效,PostScript 图像必须是使用地理坐标的 -JX-Jx 笛卡尔投影创建的。 如果不是,则会发出警告,但仍会创建 KML 文件。 提供了若干以 +opt 字符串形式出现的修改器选项,用于自定义 KML 文件:

  • +ttitle :设置文档标题 [默认为 GMT KML Document]

  • +nlayername :设置图层名称

  • +a/altmode[altitude] :选择 Google Earth 识别的 5 种高度模式之一,用于确定图像的高度(单位为米):
    • G :贴地 (clamped to the ground)

    • g :附加相对于地面的高度

    • a :附加绝对高度

    • s :附加相对于海床的高度,

    • S :贴紧海床

  • +lminLOD/maxLOD+fminfade/maxfade :控制图层的可见性

如果打算将图像本身保留在服务器上而仅分发 KML,请使用 +uURL 在图像引用前附加 URL。 如果正在构建一个多组件 KML 文件,则可以使用 +ofoldername 修改器发布一个不带 KML 头尾的 KML 片段。 它会将图像及相关的 KML 代码封装在指定名称的 KML 文件夹中。 有关进一步解释,请参阅 KML 文档

注意:如果任何标题或名称在字母旁边包含加号,可能会被误认为选项修改器。 请在加号前放置反斜杠来进行转义。或者,将字符串括在双引号中,然后将整个 -W 参数括在单引号中(反之亦然)。

关于创建地理参照光栅的进一步说明: psconvert 可以通过世界文件创建地理参照光栅图像, 或者使用 GDAL 将 GMT PostScript 文件转换为 GeoTIFF。 GDAL 使用 PROJ 作为其投影库。 为了提供进行地理参照所需的信息,GMT 在 PostScript 文件开头附近嵌入了一条使用 PROJ 语法定义投影的注释。 使用 GMT v4.5 之前版本的 PostScript 文件甚至是非 GMT 生成的 ps 文件的用户, 可以通过手动在 PostScript 文件中编辑一行以 %%PROJ 为前缀的内容,来提供 psconvert 所需的信息。

例如,命令:

gmt coast -JM0/12c -R-10/-4/37/43 -W1 -Di -Bg30m --MAP_FRAME_TYPE=inside -ps cara

会添加如下注释行:

%%PROJ: merc -10.0 -4.0 37.0 43.0 -1113194.908 -445277.963 4413389.889 5282821.824 +proj=merc +lon_0=0 +k=-1 +x_0=0 +y_0=0 +a=6378137.0 +b=6356752.314245 +ellps=WGS84 +datum=WGS84 +units=m +no_defs

其中 'merc' 是坐标转换的关键;第 2 到第 5 个元素包含地图范围, 第 6 到第 9 个元素是投影坐标下的地图范围,该行的其余部分则是此投影的标准 PROJ 字符串。

-Z
-Z

转换完成后删除输入的 PS 文件。若转换失败,输入的 PS 文件不会被删除。

-^-

显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -

-++

显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明

-? 或无参数

显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明

--PAR=value

临时修改GMT参数的值,可重复多次使用。参数列表见 配置参数

注意事项

转换为光栅图像(BMP、JPEG、PNG、PPM 或 TIFF)不可避免地会导致原始 PostScript 文件中可用细节的丢失。 请根据图像的应用场景选择足够大的分辨率。对于网页,较小的 dpi 值即可满足要求; 对于 Word 文档和 PowerPoint 演示文稿,建议使用更高的 dpi 值。 psconvert 在创建 PDF 和 PNG 文件时使用无损 DEFLATE 压缩技术,而在创建 TIFF 图像时使用 LZW 压缩。 对于较小 dpi 的图像(例如构建动画所需的图像),使用 -Qt4 和 -Qg4 可能有助于使文本和线条更加清晰, 使用 -H 选项也有类似效果。

EPS 是一种矢量格式(而非光栅格式)。因此, -E 选项对 EPS 文件的创建没有影响。 使用 -Te 选项将从 PostScript 文件中移除 setpagedevice 命令,并在使用 -A 选项时调整 BoundingBox。 请注意,原始及所需的 BoundingBox 仅限于整数点,因此 Adobe 增加了可选的 HiResBoundingBox 以提高尺寸精度。 -A 选项会同时计算这两者并将其写入 EPS 文件,随后根据要求用于任何光栅化过程。 当使用 -TE 选项时,会添加一个新的 setpagedevice 命令,该命令将指示绘图的实际页面大小,类似于 BoundingBox。 请注意,如果包含在其他文档中的 PostScript 文件存在 setpagedevice 命令, 可能会对整个文档的打印或查看造成严重干扰。因此, -TE 应仅用于“独立”的 PostScript 文件。

尽管 PDF 也是矢量格式,但 -E 选项对文档中以位图形式存储的填充图案和字体的分辨率有影响。 因此, psconvert 在创建 PDF 文件时会使用较大的默认分辨率。 -E 还决定了用于指示输出 PDF 尺寸的 BoundingBox 值的分辨率。 为了获得高质量的 PDF 文件,/prepress 选项会生效, 该选项仅允许对嵌入在 PostScript 文件中的光栅图像进行无损 DEFLATE 压缩。

虽然 psconvert 是作为 GMT 的一部分开发的,但它可以用于转换几乎任何图形程序创建的 PostScript 文件。 然而, -A+u 是 GMT 特有的功能。

转换为 GeoPDF 已被证明是不稳定的,可能会创建无法打开的 PDF 文件。 因此,我们将此设置为一个可选设置,现在需要使用 -Qp 选项来激活, 因为大多数用户其实并不了解 GeoPDF。

示例

使用紧凑的 BoundingBox 将文件 psfile.ps 转换为 PNG:

gmt psconvert psfile.ps -A -Tg

将文件 map.ps 转换为 PDF,进行裁剪,然后将 BoundingBox 扩展 0.2 cm,填充浅蓝色并使用粗画笔绘制轮廓:

gmt psconvert map.ps -A -I+m0.2c -N+glightblue+pthick -Tf

为裁剪后的 example_01.ps 文件创建一个宽度为 5 cm、分辨率为 300 dpi 的 PNG 版本:

gmt psconvert example_01.ps -A -I+s5c -Tg

从 3 个独立的 PS 文件中创建一个包含 3 页的 PDF 文件:

gmt psconvert -TF -Fabc a.ps b.ps c.ps

使用 coast 创建一个简单的线性投影地图,并结合紧凑 BoundingBox 计算将其转换为带有 .tfw 文件的 TIF:

gmt coast -JX12cd -R-10/-4/37/43 -W1 -Di -Bg30m -G200 --MAP_FRAME_TYPE=inside -ps cara
gmt psconvert cara.ps -Tt -W

创建上述示例的墨卡托投影版本,并使用 GDAL 生成真正的 GeoTIFF 文件:

gmt coast -JM0/12c -R-10/-4/37/43 -W1 -Di -Bg30m -G200 --MAP_FRAME_TYPE=inside -ps cara
gdalwarp -s_srs +proj=merc cara.tif carageo.tiff

创建巴塔哥尼亚 (Patagonia) 的极地方位立体投影 GeoTIFF 文件:

gmt coast -JS-55/-60/15c -R-77/-55/-57.5/-48+r -Di -Gred -Bg2 --MAP_FRAME_TYPE=inside -ps patagonia
gmt psconvert patagonia.ps -Tt -W+g -V

创建一个可在 Google Earth 中使用的简单 KML 文件:

gmt grdimage lonlatgrid.nc -Jx1 -Ccolors.cpt -B0g2 --MAP_FRAME_TYPE=inside -ps tile
gmt psconvert tile.ps -Tg -W+k+t"my title"+l256/-1 -V

Ghostscript 选项

psconvert 中的大多数转换工作由 Ghostscript 处理。在大多数 Unix 系统上,该程序以 gs 命令提供;对于 Windows 系统,则有一个名为 gswin64c 的版本。 Ghostscript 接受丰富的命令行选项来修改其行为。其中许多选项是由上述 GMT 选项间接设置的。然而,高级用户可能需要添加额外的选项来微调结果。 使用 -S 查看实际运行的命令,并通过一个或多个 -C 选项添加自定义选项。 例如,若要为所有图像开启图像插值 (image interpolation),从而以牺牲速度为代价提高缩放图像的质量,请使用 -C-dDOINTERPOLATE。 有关完整文档,请参阅 https://www.ghostscript.com/

制作 KMZ 文件

如果您制作了一系列 KML 文件(这些文件可能依赖于本地 PNG 图像等其他项),您可以将它们合并为一个 KMZ 文件,以节省空间并将相关文件归类在一起。 gmt_shell_functions.sh 中的 Bash 函数 gmt_build_kmz 可用于实现此目的。 在使用该函数之前,您需要先运行 source gmt_shell_functions.sh。

弃用说明

  • 6.5.0: -N 选项的修改器 +i 已弃用(但仍受支持)。#7972

  • 6.3.0: -A 选项的修改器 +m+g 等已移至 -I-N-W 选项。#5583