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実行可能ファイルがエラーになり、接続を閉じているようです。他の人は、異なる OSで同じ問題を抱えていました。

そのため、まず PIL が正しくインストールされていることを確認することをお勧めします。ヒントについては、 FAQ ページを参照してください。次に、Ghostscriptがインストールされ、機能していることを確認します。最後に、たとえば別の場所で動作する PIL スクリプトを実行して、Python が Ghostscript を見つけられるようにします。

また、壊れたパイプ エラーをキャッチして、プログラムの回復力を高め、問題を認識し、エンド ユーザーに警告するためのヒントをいくつか紹介します。それが役立つことを願っています!

于 2011-06-08T17:29:55.360 に答える