【问题标题】:Resize picture size in tkinter在 tkinter 中调整图片大小
【发布时间】:2021-05-07 20:51:42
【问题描述】:

我想知道是否有一种方法可以调整已加载到 Tkinter 标签小部件中的图像大小。我一直在尝试使用 Tkinter 制作一个骰子模拟器,它将显示骰子的图像,显​​示随机数。问题是这些图像没有相似的大小。这是程序的开始部分:

import tkinter as tk
from PIL import Image, ImageTk
from random import choice

root = tk.Tk()
root.title('Dice Simulator')
root.geometry('400x400')
root.resizable(0, 0)

dice = ['die1.jpg', 'die2.jpg', 'die3.jpg', 'die4.jpg', 'die5.jpg', 'die6.jpg']
DiceImage = ImageTk.PhotoImage(Image.open(choice(dice)))

ImageLabel = tk.Label(root, image=DiceImage)
ImageLabel.image = DiceImage
ImageLabel.pack(expand=True)

root.mainloop()

我们可以将图像大小调整为 400x400 并显示所有图像吗?

【问题讨论】:

  • 最好将源图像文件调整为所需大小,以便直接使用。
  • 不胜感激在下面标记答案:D

标签: python image tkinter image-resizing


【解决方案1】:

是的,open 有一个 resize(x,y) 方法可以将图像大小调整为给定的宽度(x)和高度(y)。

dice = ['die1.jpg', 'die2.jpg', 'die3.jpg', 'die4.jpg', 'die5.jpg', 'die6.jpg']
resized_opened_img = [Image.open(x).resize((400,400),Image.ANTIALIAS) for x in dice]

DiceImage = ImageTk.PhotoImage(choice(resized_opened_img))

在这里它将图像调整为 400x400 方形图像并将这些对象附加到一个列表中,然后您可以使用 choice 从中随机选择一个。 Read more about resize here

你也可以去掉ImageLabel.image = DiceImage,只要它在函数之外。

【讨论】:

  • 你能解释一下Image.ANTIALIAS是做什么的吗?
  • @SiddheshAgarwal 当然,它有更多的图像基础知识,抗锯齿可以平滑图像的粗糙边缘(如果有的话),同时调整大小。
猜你喜欢
  • 2011-05-03
  • 2021-04-21
  • 2020-07-04
  • 2016-01-25
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多