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

时间:2010-09-11 03:32:27

标签: png transparency ghostscript gnuplot

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

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

2 个答案:

答案 0 :(得分:4)

“为什么会这样?”

结合的两个可能原因:

首先: 您的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 ...命令行。

“我如何获得带白色背景的png图像?”

试试这个:

convert a.ps -background white a.png

答案 1 :(得分:0)

Pipitas已经很好地解释了为什么会这样。

为了解决您的问题,即获得白色背景,请使用-alpha off命令行上的convert设置。此外,使用-density x开关控制输出的分辨率非常有用。因此,你应该尝试类似的东西:

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