如果您在对的调用中未提供file参数
cnv.postscript,则a
cnv.postscript返回Postscript作为(unipre)字符串。然后,您可以将unipre转换为字节,并将其提供给
io.BytesIO和
Image.open。
Image.open可以作为第一个参数接受任何类似文件的对象,农具
read,
seek和
tell方法。
import iodef savefirst(): cnv = getscreen().getcanvas() global hen ps = cnv.postscript(colormode = 'color') hen = filedialog.asksaveasfilename(defaultextension = '.jpg') im = Image.open(io.BytesIO(ps.enpre('utf-8'))) im.save(hen + '.jpg')例如,大量借用A. Rodas的代码,
import Tkinter as tkimport subprocessimport osimport iofrom PIL import Imageclass App(tk.Tk): def __init__(self): tk.Tk.__init__(self) self.line_start = None self.canvas = tk.Canvas(self, width=300, height=300, bg="white") self.canvas.bind("<Button-1>", lambda e: self.draw(e.x, e.y)) self.button = tk.Button(self, text="save", command=self.save) self.canvas.pack() self.button.pack(pady=10) def draw(self, x, y): if self.line_start: x_origin, y_origin = self.line_start self.canvas.create_line(x_origin, y_origin, x, y) self.line_start = x, y def save(self): ps = self.canvas.postscript(colormode='color') img = Image.open(io.BytesIO(ps.enpre('utf-8'))) img.save('/tmp/test.jpg')app = App()app.mainloop()


