为啥从 gnuplot postscript 输出转换的 .png 具有透明背景?

Posted

技术标签:

【中文标题】为啥从 gnuplot postscript 输出转换的 .png 具有透明背景?【英文标题】:Why a .png converted from a gnuplot postscript output, has transparent background?为什么从 gnuplot postscript 输出转换的 .png 具有透明背景? 【发布时间】:2010-09-11 03:32:27 【问题描述】:

我使用 gnuplot (4.2) 将图形写入 postscript 文件。但是,当我使用“convert file.ps file.png”命令将此 .ps 文件转换为 .png 文件时,我得到一个没有背景(透明)的 png 图像。

为什么会发生这种情况,如何获得具有白色背景的 png 图像?

【问题讨论】:

【参考方案1】:

“为什么会这样?”

两个可能的原因结合起来:

首先:您的 PostScript 输入很可能不包含任何背景。实际上,这是“透明的”。打印时,这会像往常一样出现。 (某些 PostScript 文件确实有白色背景。在打印时,这仍然像往常一样出现。您只会在回想起来尝试在文件的“背景”中添加一些水印并且似乎不起作用时才发现。在这些情况下,水印笔触被白色区域覆盖,该区域又被最初笔触的 PS 内容覆盖...)

第二个:convert a.ps a.png 命令本身并不能完成这项工作。它调用外部 'delegate' 帮助程序,很可能是 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 ... 命令行。

“如何获得白色背景的 png 图片?”

试试这个:

convert a.ps -background white a.png

【讨论】:

【参考方案2】:

Pipitas 已经很好地解释了为什么会发生这种情况。

为了解决您的问题,即获得白色背景,请在convert 命令行上使用-alpha off 设置。此外,使用-density x 开关控制输出分辨率也很有用。因此,您应该尝试以下方法:

convert -density 300 -alpha off input.ps output.png

【讨论】:

以上是关于为啥从 gnuplot postscript 输出转换的 .png 具有透明背景?的主要内容,如果未能解决你的问题,请参考以下文章

Windows 8,打印到 PostScript 打印机到文件

gnuplot画图中文标注相关问题

Gnuplot 输出设置为“在屏幕上”显示如何更改程序,以便将绘图输出定向到我在下面提供程序的文件夹

apache bench gnuplot 输出 - 列定义是啥?

gnuplot 如何从文件读取数据

GNUPLOT画图工具