我使用 gnuplot (4.2) 将图形写入 postscript 文件。但是,当我使用“convert file.ps file.png”命令将此 .ps 文件转换为 .png 文件时,我得到一个没有背景(透明)的 png 图像。
为什么会发生这种情况,如何获得具有白色背景的 png 图像?
我使用 gnuplot (4.2) 将图形写入 postscript 文件。但是,当我使用“convert file.ps file.png”命令将此 .ps 文件转换为 .png 文件时,我得到一个没有背景(透明)的 png 图像。
为什么会发生这种情况,如何获得具有白色背景的 png 图像?
两个可能的原因结合起来:
首先:您的 PostScript 输入很可能不包含任何背景。实际上,这是“透明的”。打印时,这会像往常一样出现。(某些 PostScript 文件确实有白色背景。在打印时,这仍然像往常一样出现。您只会在回想起来尝试在文件的“背景”中添加一些水印并且似乎不起作用时才发现。在这些情况下,水印笔触被白色区域覆盖,该区域再次被最初笔触的 PS 内容覆盖......)
第二:convert a.ps a.png
命令本身不做这项工作。它调用外部 “委托”帮助程序,很可能是 Ghostscript。Ghostscript 有不同的方法来调整它的 PNG 输出。您可以像这样查询 Ghostscript 的所有输出“设备”:
gs -h
现在将查询限制为仅包含与 PNG 相关的设备的行:
gs -h | grep png
你会看到有一个pngalpha
输出设备。这个可以输出PNG图像的透明度。
接下来,查询convert
其代表的完整列表:
convert -list delegate
你会看到几十个convert
在你背后使用的命令来完成它的工作。让我们看看它用于 PNG 输入或输出处理的命令:
convert -list delegate | grep -i png
您可能会发现gs ... -sDEVICE=pngalpha ...
某些转换类型的命令行。
尝试这个:
convert a.ps -background white a.png
Pipitas 已经很好地解释了为什么会发生这种情况。
为了解决您的问题,即获得白色背景,请使用命令行-alpha off
上的设置。此外,使用开关convert
控制输出的分辨率也很有用。-density x
因此,您应该尝试以下操作:
convert -density 300 -alpha off input.ps output.png