使用ImageTk对象创建对象不会创建副本,只保留对该对象的引用,这意味着使用相同的图片100次并编辑一次会改变所有图片。我需要的确如此。这是我试过的:
from tkinter import *
from PIL import Image, ImageTk
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.image = Image.open("engflag.png")
self.tkimage = ImageTk.PhotoImage(self.image)
self.button = Button(self, command = self.test)
self.button.grid()
def test(self):
print(self.tkimage)
self.tkimage = ImageTk.PhotoImage(self.image.resize((200,200), Image.ANTIALIAS))
print(self.tkimage)
x = App()
x.mainloop()
在第一个print语句中,self.tkimage具有第一个对象的引用并打印“pyimage1”。在下一行中,从已加载的self.image创建一个新对象,self.tkimage现在引用第二个对象,下一个print语句打印“pyimage2”。
是否可以创建新的图像对象并将其替换为旧图像对象或直接编辑第一个图像对象?
答案 0 :(得分:0)
使用ImageTk.paste()
替换Image
ImageTk
self.image2 = Image.open(...)
self.tkimage.past(self.image2)