我正在尝试放大图像并使用以下代码显示
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缩放(以及其他一些方法)。”
我认为这意味着我需要将其他内容导入到我的代码中,但是我不确定是什么。任何帮助都会很棒!
答案 0 :(得分:1)
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图片,则可以使用以下示例中的resize:
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
,这对我来说只是令人困惑