首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PhotoImage变焦

PhotoImage变焦
EN

Stack Overflow用户
提问于 2019-10-16 10:33:35
回答 1查看 5.1K关注 0票数 2

我试图放大一个图像并用下面的代码显示它

代码语言:javascript
复制
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缩放(以及其他一些方法)”。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-16 10:55:13

img1没有方法zoom,但是img1._PhotoImage__photo有。因此,只需将代码更改为:

代码语言:javascript
复制
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映像,那么您可以使用调整大小的方法,如下例所示:

代码语言:javascript
复制
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__,这对我来说只是令人困惑

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58411250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档