You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Tkinter中调整网络URL图片的大小?

如何在Tkinter中调整网络URL图片的大小

要调整网络图片的尺寸,核心是借助PIL库将获取到的图片二进制数据转为可编辑的Image对象,调整大小后再转为Tkinter兼容的格式。以下是修改后的完整代码:

from urllib.request import urlopen
from tkinter import *
from PIL import ImageTk, Image
from io import BytesIO  # 用于包装二进制图片数据

screen = Tk()
screen.title("Top Movies of The Week")
screen.config(padx=50, pady=50, bg="red")

image_url = "https://m.media-amazon.com/imag/MV5BYTRiNDQwYzAtMzVlZS00NTI5LWJjYjUtMzkwNTUzMWMxZTllXkEyXkFqcGdeQXVyNDIzMzcwNjc@._V1_.jpg"
u = urlopen(image_url)
raw_data = u.read()

# 将二进制数据转为PIL Image对象
img = Image.open(BytesIO(raw_data))

# 方法1:固定尺寸调整(示例为200x300,可按需修改)
# resized_img = img.resize((200, 300), Image.Resampling.LANCZOS)

# 方法2:保持宽高比调整(限制最大宽度为200)
max_width = 200
ratio = max_width / img.width
new_height = int(img.height * ratio)
resized_img = img.resize((max_width, new_height), Image.Resampling.LANCZOS)

# 转为Tkinter可用的PhotoImage
photo = ImageTk.PhotoImage(resized_img)

label = Label(image=photo)
label.pack()

screen.mainloop()

关键步骤说明

  • 导入BytesIO:把网络获取的二进制图片数据包装成PIL能识别的类文件对象,这样才能用Image.open()读取。
  • 调整尺寸:
    • 固定尺寸直接传入目标宽高元组(width, height)。
    • 保持宽高比则先计算比例,再推导对应高度,避免图片变形。
  • 插值方法:使用Image.Resampling.LANCZOS(PIL 9.1.0+版本),低版本PIL替换为Image.LANCZOS,该方法能让调整后的图片保持较高清晰度。

内容的提问来源于stack exchange,提问作者Clay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:30:52