在编写tkinter应用程序时,我偶然发现了以下现象。我在试验改变tk.PhotoImage对象的颜色。代码如下:对于每个像素,它选择颜色值并将其更改为黑色或白色(这无关紧要,只是一个示例)
import tkinter as tk
root = tk.Tk()
picture = tk.PhotoImage(file=r'image.png')
cnv = tk.Canvas(width=800, height=600)
cnv.pack()
cnv.create_image(0,0, anchor=tk.NW, image=picture) # create_image here: > 35 seconds
for px in range(800):
for py in range(600):
color = picture.get(px,py)
newcolor = '#ffffff' if color[0] > 128 else '#000000'
picture.put(newcolor, (px,py))
# cnv.create_image(0,0, anchor=tk.NW, image=picture) # create_image here: ~ 3 seconds
tk.mainloop()
当你运行这段代码时,真的,要有点耐心,在窗口最终弹出之前需要35秒(在iCore7上)。但它会的
现在,当我在更改所有颜色后创建画布图像时,代码运行速度快了10倍以上!缺少(在这两种情况下)是由put()
函数引起的(该get()
函数很快)
表面下发生了什么,解释了这一巨大差异
示例图片(任何800x600 PNG都可以)
目前没有回答
相关问题 更多 >
编程相关推荐