【发布时间】:2019-05-10 12:01:31
【问题描述】:
我有一个 Tkinter GUI 程序,它根据用户提供的比例因子显示图像(大约 100 张图片)。因此我使用 PIL 来调整图像的大小,将它们一个接一个地存储在一个数组中
My_Images = []
for i in range(100)
img = Image.open("Pic"+ str(i) + ".gif")
Zimg = img.resize((Z.Width,Z.Height))
Zimage = ImageTk.PhotoImage(Zimg)
My_Images.append(Zimage)
Z.Width 和 Z.Height 由函数根据用户输入的比例因子计算得出。因此,GUI 窗口使用的画布被配置为根据用户导航输入一个接一个地显示图片(由数组引用)。
我担心的是,当我在多个基于用户的条目(缩放因子)之后打印数组内容时,从而对上述“for循环”进行多次迭代,数组 My_Images 内容的打印命令给出“ pyimage900",以及类似的如此高的数字。我想知道这是否对内存分配有任何负面影响,因为在“for loop”的第九次迭代之后,“pyimage1”-“pyimage800”对我没有用。 尽管每次启动“for循环”之前都会清除数组,但“pyimage”的数字后缀中的条目仍然不断增加。
未使用的 pyimage 对象的这种内存分配对内存有负面影响吗?是否/我可以删除它们,如何?
【问题讨论】:
-
img = Image.open(...) 行可以放在 for 循环之外(之前)。
-
将“Zimage”记录在 My_Images 数组中的目的是什么?
-
@VikhyatAgarwal Image.open(...) 用于打开一个又一个图像,因此它在 for 循环中。
-
@VikhyatAgarwal 记录在 My_Images 数组中的 Zimage 将用于通过访问数组 inex 和分别配置画布来显示相应调整大小的图像。
标签: python-3.x user-interface tkinter tkinter-canvas