Python:PIL - [Errno 32]保存.png时断管

Ada*_*itz 4 python tkinter python-imaging-library tkinter-canvas

我在这里要做的是使用PIL将Tkinter Canvas的内容保存为.png图像.

这是我的保存功能('graph'是画布).

def SaveAs():
    filename = tkFileDialog.asksaveasfilename(initialfile="Untitled Graph", parent=master)
    graph.postscript(file=filename+".eps")
    img = Image.open(filename+".eps")
    img.save(filename+".png", "png")
Run Code Online (Sandbox Code Playgroud)

但它得到了这个错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1410, in __call__
    return self.func(*args)
  File "C:\Users\Adam\Desktop\Graphing Calculator\Graphing Calculator.py", line 352, in SaveAs
    img.save(filename+".png", "png")
  File "C:\Python27\lib\site-packages\PIL\Image.py", line 1406, in save
    self.load()
  File "C:\Python27\lib\site-packages\PIL\EpsImagePlugin.py", line 283, in load
    self.im = Ghostscript(self.tile, self.size, self.fp)
  File "C:\Python27\lib\site-packages\PIL\EpsImagePlugin.py", line 72, in Ghostscript
    gs.write(s)
IOError: [Errno 32] Broken pipe
Run Code Online (Sandbox Code Playgroud)

我在Windows 7,Python 2.7.1上运行它.

我该如何工作?

小智 5

哦,我得到同样的错误.我现在已经解决了

安装PIL和Ghostscript后,请执行以下操作

1)打开C:\ Python27\Lib\site-packages\PIL\EpsImagePlugin.py 2)更改第50行附近的代码,使其如下所示:

构建ghostscript命令

command = ["gswin32c",
           "-q",                    # quite mode
           "-g%dx%d" % size,        # set output geometry (pixels)
           "-dNOPAUSE -dSAFER",     # don't pause between pages, safe mode
           "-sDEVICE=ppmraw",       # ppm driver
           "-sOutputFile=%s" % file,# output file
           "-"
           ]
Run Code Online (Sandbox Code Playgroud)

确保gswin32c.exe位于PATH中

祝好运