使用Tkinter和ImageTk.PhotoImage调整图像大小
在使用Python进行GUI界面开发时,Tkinter库是很常用的一个库。而处理图像方面,常用的是PIL库。而ImageTk库则是将PIL库转换为Tkinter库所能接受的对象。
本文将介绍使用Tkinter和ImageTk.PhotoImage两个库来调整图像大小的方法。
安装库和准备工作
要使用这两个库,需要先通过pip安装:
pip install tkinter
pip install pillow
还需要准备一张要处理的图像,这里我们使用一张名为“example.jpg”的图片。
读取图像并显示
首先使用PIL库中的Image.open()方法读取图像,同时使用Image.show()方法在系统默认的图片查看工具中打开图片:
from PIL import Image
img = Image.open('example.jpg')
img.show()
这样就可以打开我们准备好的图像。
如果想在Tkinter中显示图像,需要先将图像转换为Tkinter库中的Image对象。可以使用以下代码:
from PIL import ImageTk, Image
from tkinter import Tk, Label
root = Tk()
img = Image.open('example.jpg')
tkimg = ImageTk.PhotoImage(img)
Label(root, image=tkimg).pack()
root.mainloop()
这样就可以在Tkinter窗口中显示图像了。
调整图像大小
接下来就是要调整图像的大小。调整大小的方法使用Image对象的resize()方法。它接受一个包含两个参数的元组,分别是新的宽和高。下面的代码会将一张512×512的图像调整为256×256:
from PIL import ImageTk, Image
from tkinter import Tk, Label
root = Tk()
img = Image.open('example.jpg')
resized_img = img.resize((256, 256))
tkimg = ImageTk.PhotoImage(resized_img)
Label(root, image=tkimg).pack()
root.mainloop()
这样就能调整图像大小并在Tkinter窗口中显示了。
完整代码
下面是完整的代码,包括读取和显示图像,以及调整图像大小:
from PIL import ImageTk, Image
from tkinter import Tk, Label
root = Tk()
# 读取并显示原始图像
img = Image.open('example.jpg')
img.show()
# 将图像转换为Tkinter库中的对象并显示在窗口中
tkimg = ImageTk.PhotoImage(img)
Label(root, image=tkimg).pack()
# 调整图像大小并显示在窗口中
resized_img = img.resize((256, 256))
resized_tkimg = ImageTk.PhotoImage(resized_img)
Label(root, image=resized_tkimg).pack()
root.mainloop()
结论
使用Tkinter和ImageTk.PhotoImage可以将PIL库中的图像对象转换为Tkinter库能够接受的对象,并进行图像大小的调整。除了调整大小,PIL库还提供了很多其他的图像处理方法,可以根据需要自行探索。