Python PIllow - 编辑现有的ImageTk对象

时间:2016-01-30 11:16:43

标签: image python-3.x tkinter python-imaging-library pillow

使用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”。

是否可以创建新的图像对象并将其替换为旧图像对象或直接编辑第一个图像对象?

1 个答案:

答案 0 :(得分:0)

使用ImageTk.paste()替换Image

中的ImageTk
self.image2 = Image.open(...)

self.tkimage.past(self.image2)

http://effbot.org/imagingbook/imagetk.htm

相关问题