|
发表于 2020-6-22 13:14:06
|
显示全部楼层
本帖最后由 java2python 于 2020-6-22 14:40 编辑
这个能做到吗?
【请珍藏】python tkinter保存canvas画布的三种方法
https://blog.csdn.net/dhjabc_1/article/details/105434658
实际并没有这样的手段,他的第三个方法:
- from tkinter import *
- from PIL import Image, ImageDraw
- from PIL import ImageFont
-
- width = 400
- height = 300
- center = height//2
- white = (222, 222, 220)
- green = (0,128,0)
- red = (128,0,0)
-
- root = Tk()
- cv = Canvas(root, width=width, height=height, bg='white')
- cv.pack()
- image1 = Image.new("RGB", (width, height), white)
- draw = ImageDraw.Draw(image1)
- cv.create_line([0, center, width, center], fill='green')
- draw.line([0, center, width, center], green)
- draw.line([0, 100, width, 100], red)
- #font = ImageFont.truetype("consola.ttf", 40, encoding="unic" ) # 设置字体
- font = ImageFont.truetype("C:\Windows\Fonts\simfang.ttf",40, encoding="utf-8")
- draw.text((0, 50), u'你好 World', 'fuchsia', font)
- filename = "third.jpg"
- image1.save(filename)
- root.mainloop()
复制代码
就是采用往图形作画的同时,也用ImageDraw往image1 里做同样动作,最后保存,实际不是保存canvas的图像,而是保存了image1的内容。实际操作的时候,可以任何动作,通过函数,函数里再:既往canvas作画,又往image1里写,最后当然是保存image1里面的内容,看上去像是canvas被保存下来了 |
|