PhotoImage变焦

时间:2019-10-16 10:33:35

标签: python tkinter zoom photoimage

我正在尝试放大图像并使用以下代码显示

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缩放(以及其他一些方法)。”

我认为这意味着我需要将其他内容导入到我的代码中,但是我不确定是什么。任何帮助都会很棒!

1 个答案:

答案 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()

请注意,我只导入了ImageImageTk,看不到需要重命名为PIL_imagePIL_imagetk,这对我来说只是令人困惑