我必须用PIL打开几个图像。现在,我只有3张图片,所以我一直在像这样打开它们,而不是在for循环中:
self.redpic = Image.open("red.png")
self.redpic = self.redpic.resize((100,100), Image.ANTIALIAS)
self.img1 = ImageTk.PhotoImage(self.redpic)
但是将来,我将至少打开20张图像,因此我尝试了for-loop实现:
def process_image(self):
for valx in range(5):
self.numbering = "image" + str(valx);
self.numbpng = numbering + ".png";
self.numbering = Image.open(numbpng);
self.numbering = self.numbering.resize((100,100), Image.ANTIALIAS)
self.numbering= ImageTk.PhotoImage(self.numbering)
但是,与此同时,我无法访问刚刚创建的图像。我一直在阅读有关动态创建变量的知识,以及不建议如何使用它,因此,我想知道什么是最好的方式来访问self.imagex
,其中x
是图像的数字。我知道图像的数量提前。
答案 0 :(得分:0)
避免动态创建变量的一种常见方法是将项目存储在某种大小可变的容器中,例如tuple
,list
,dict
等。>
以下是将它们存储在名为list
的类实例属性中的示例:
self.images
调用该方法后,您可以像这样引用单个图像:
from PIL import Image, ImageTk
class Class:
def process_images(self, num_images):
self.images = []
for i in range(num_images):
image_filename = "image%s.png" % i
number_img = Image.open(image_filename).resize((100, 100), Image.ANTIALIAS)
number_img = ImageTk.PhotoImage(number_img)
self.images.append(number_img)
c = Class()
c.process_images(5)