我试图放大一个图像并用下面的代码显示它
import tkinter as tk
from PIL import Image as PIL_image, ImageTk as PIL_imagetk
window = tk.Tk()
img1 = PIL_imagetk.PhotoImage(file="C:\\Two.jpg")
img1 = img1.zoom(2)
window.mainloop()但是python说AttributeError: 'PhotoImage' object has no attribute 'zoom'。这里有一篇相关文章的评论:Image resize under PhotoImage说“PIL的PhotoImage不实现从Tkinter的PhotoImage缩放(以及其他一些方法)”。
我认为这意味着我需要在代码中导入其他内容,但我不确定是什么。任何帮助都会很好!
发布于 2019-10-16 10:55:13
img1没有方法zoom,但是img1._PhotoImage__photo有。因此,只需将代码更改为:
import tkinter as tk
from PIL import Image as PIL_image, ImageTk as PIL_imagetk
window = tk.Tk()
img1 = PIL_imagetk.PhotoImage(file="C:\\Two.jpg")
img1 = img1._PhotoImage__photo.zoom(2)
label = tk.Label(window, image=img1)
label.pack()
window.mainloop()顺便说一句,如果您想减少图像,可以使用subsample img1 = img1._PhotoImage__photo.subsample(2)方法将图像减少一半。
如果您有一个PIL映像,那么您可以使用调整大小的方法,如下例所示:
import tkinter as tk
from PIL import Image, ImageTk
window = tk.Tk()
image = Image.open('C:\\Two.jpg')
image = image.resize((200, 200), Image.ANTIALIAS)
img1 = ImageTk.PhotoImage(image=image)
label = tk.Label(window, image=img1)
label.pack()
window.mainloop()注意:我只是导入了Image和ImageTk__,没有必要将其重命名为PIL_image和PIL_imagetk__,这对我来说只是令人困惑
https://stackoverflow.com/questions/58411250
复制相似问题