使用SchemDraw库自动保存图像

时间:2018-03-07 18:29:01

标签: python

我想在python中使用这个库来生成电子图: https://cdelker.bitbucket.io/SchemDraw/, 我想在服务器上运行此代码。

这个想法是生成图像,将其保存在服务器中,然后通过URL将其提供给客户端。

我正在使用其示例代码进行测试:

this

它工作正常,但问题是图像出现,我需要手动保存,如果我在服务器中执行此代码,它会给我错误:

  

文件" /usr/local/lib/python3.5/tkinter/ init .py",第1877行,    init api_1 | self.tk = _tkinter.create(screenName,baseName,className,interactive,wantobjects,useTk,sync,use)api_1   | _tkinter.TclError:没有显示名称,没有$ DISPLAY环境   变量

我想在服务器中显示图像是不可能的,因为它没有可视化界面。

是否有可能在不显示的情况下保存它?

1 个答案:

答案 0 :(得分:2)

SchemDraw的作者Collin Delker在https://www.collindelker.com/2014/08/29/electrical-schematic-drawing-python.html

上提供了此建议。

SchemDraw绘制在Matplotlib图形上,因此,如果您具有交互式Matplotlib后端,它将尝试在窗口中显示图像,这在服务器上是不可能的。首先尝试将后端设置为其他内容,例如“ Agg”,然后查看是否可以解决该问题:

import matplotlib
matplotlib.use('Agg') # Set the backend here

import SchemDraw as schem
import SchemDraw.elements as e
d = schem.Drawing()
...
d.draw()
d.save('mycircuit.svg')

对我有用