4

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

这是我的保存功能(“图表”是画布)。

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")

但它得到了这个错误:

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

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

我该如何进行这项工作?

4

3 回答 3

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
           "-"
           ]

确保 gswin32c.exe 在 PATH 中

祝你好运

于 2012-10-27T16:28:21.133 回答
2

看起来 Ghostscript可执行文件出错,然后关闭连接。其他人在不同的操作系统上也有同样的问题

因此,首先我建议您确认 PIL 已正确安装——请参阅常见问题解答页面以获取提示。接下来,确保Ghostscript已安装并正常工作。最后,确保 Python 可以找到 Ghostscript,例如通过运行在其他地方工作的 PIL 脚本。

哦,还有——这里有一些关于捕捉管道损坏错误的提示,这样你的程序可以更有弹性,识别问题,并警告最终用户。希望有帮助!

于 2011-06-08T17:29:55.360 回答
1

我意识到虽然 Python 2.7 有这个 EPEImagePulgin.py,但 Anaconda 也有它。不幸的是,Anaconda 的文件是旧版本。不幸的是,当您从 Spyder 环境运行时,它会从 anaconda 文件夹中获取 epsimageplugin.py 文件。

所以我遇到了类似的断管错误。

当我进入 python 2.7 目录并打开 python 控制台然后运行我的代码时,它运行得很好。

因为最新的 epsimageplugin.py 文件考虑了 windows 环境和适当的 ghostscript exe 文件。希望这可以帮助。

于 2014-12-12T22:59:57.667 回答