[Python] PIL save

Daniele Zambelli daniele.zambelli a gmail.com
Gio 26 Dic 2013 20:13:31 CET


Salve a tutti!

Sto cercando di far funzionare sotto Python 3 un metodo che va (quasi
bene) sotto Python 2.7.

Riassumendo:
ho un oggetto che crea un canvas (di tkinter), lo salva in formato .ps
e poi uso la libreria PIL per convertirlo in .png:

 from PIL.Image import open as imopen

[...]

  def save(self, filename):
        """Save graphic window to png or ps file."""
        nfps = filename+'.ps'
        nfpng = filename+'.png'
        print(nfps, nfpng)
        self._canvas.postscript(file=nfps)
        imopen(nfps).save(nfpng)
        os.remove(nfps)


Prima domanda:
In tkinter non c'è un modo semplice per salvare un canvas in formato .png?

Seconda domanda:
Chiamo il metodo con il comando:

    [...]
    p.save('esagono')
    [...]

(dove "p" è un oggetto della classe che contiene "save")
quando il metodo viene eseguito sotto Python 2.7 funziona, qundo lo
eseguo sotto Python 3.3 ottengo:

Traceback (most recent call last):
  File "/dati/daniele/linguaggi/python/sorgenti/00_librerie/pygraph/test/test_pycart.py",
line 460, in <module>
    test_17()
  File "/dati/daniele/linguaggi/python/sorgenti/00_librerie/pygraph/test/test_pycart.py",
line 186, in test_17
    p.save('esagono')
  File "/usr/lib/python3/dist-packages/pygraph/pycart.py", line 313, in save
    imopen(nfps).save(nfpng)
  File "/usr/local/lib/python3.3/dist-packages/PIL/Image.py", line 1421, in save
    self.load()
  File "/usr/local/lib/python3.3/dist-packages/PIL/EpsImagePlugin.py",
line 311, in load
    self.im = Ghostscript(self.tile, self.size, self.fp)
  File "/usr/local/lib/python3.3/dist-packages/PIL/EpsImagePlugin.py",
line 93, in Ghostscript
    gs.write(s)
TypeError: must be str, not bytes

Qualcuno saprebbe darmi qualche indicazione per risolvere il caso?

Grazie

Buone feste e buon anno a tutti.

-- 

Daniele

www.fugamatematica.blogspot.com

    giusto!
    nel verso
    forse è perché non guardiamo le cose
    Quando non ci capiamo,


Maggiori informazioni sulla lista Python