为啥从 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 输出设置为“在屏幕上”显示如何更改程序,以便将绘图输出定向到我在下面提供程序的文件夹