使用PIL在Tkinter中載入影像


Python 是一種極其靈活的程式語言,擁有各種可以處理各種任務的庫。在建立圖形使用者介面 (GUI) 時,Tkinter 成為了 Python 的預設包。類似地,Python 影像庫 (PIL) 常用於影像處理。為了更好地解釋如何使用 PIL 在 Tkinter 中載入影像,本指南將兩者結合起來,幷包含實際示例。

Tkinter 和 PIL 簡介

在進入主題之前,讓我們快速解釋一下 Tkinter 和 PIL。

Tkinter 是 Python 的預設 GUI 工具包。它易於使用,併為 Tk GUI 工具包提供強大的面向物件介面,用於開發桌面應用程式。

相反,PIL(目前稱為 Pillow)是一個免費的 Python 程式語言庫,它支援開啟、修改和儲存各種影像檔案型別。

安裝必要的庫

要繼續本教程,您需要在您的機器上安裝 Tkinter 和 PIL。Python 自帶已安裝的 Tkinter。您可以使用 pip 安裝 PIL (Pillow)

在 Tkinter 中使用 PIL 載入影像

要在 Tkinter 視窗中顯示影像,您需要執行以下步驟:

  • 匯入所需的庫。

  • 使用 PIL 開啟影像。

  • 使用影像物件建立一個與 Tkinter 相容的 PhotoImage。

  • 建立一個 Tkinter Label 或 Canvas 小部件來顯示影像。

讓我們來看一些例子。

示例 1:基本的影像載入

這是一個載入本地影像的簡單示例。

from tkinter import Tk, Label
from PIL import Image, ImageTk

# Initialize Tkinter window
root = Tk()

# Open image file
img = Image.open('path_to_image.jpg')
# Convert the image to Tkinter format
tk_img = ImageTk.PhotoImage(img)

# Create a label and add the image to it
label = Label(root, image=tk_img)
label.pack()

# Run the window's main loop
root.mainloop()

示例 2:調整影像大小

如果影像的大小對於您的應用程式來說太大,您可以在顯示影像之前使用 PIL 的 resize() 方法縮放它。

from tkinter import Tk, Label
from PIL import Image, ImageTk

# Initialize Tkinter window
root = Tk()

# Open image file
img = Image.open('path_to_image.jpg')

# Resize the image
img = img.resize((200, 200), Image.ANTIALIAS)

# Convert the image to Tkinter format
tk_img = ImageTk.PhotoImage(img)

# Create a label and add the image to it
label = Label(root, image=tk_img)
label.pack()

# Run the window's main loop
root.mainloop()

示例 3:從 URL 載入影像

有時您可能需要從 URL 載入影像。為此,除了 PIL 和 Tkinter 之外,您還可以使用 urllib 和 io 庫。

import io
import urllib.request
from tkinter import Tk, Label
from PIL import Image, ImageTk

# Initialize Tkinter window
root = Tk()

# URL of the image
url = 'https://example.com/path_to_image.jpg'

# Open URL and load image
with urllib.request.urlopen(url) as u:
   raw_data = u.read()

# Open the image and convert it to ImageTk format
im = Image.open(io.BytesIO(raw_data))
img = ImageTk.PhotoImage(im)

# Create a label and add the image to it
label = Label(root, image=img)
label.pack()

# Run the window's main loop
root.mainloop()

結論

本文提供了一個關於使用 PIL 在 Tkinter 中載入影像的全面教程,這是建立 Python GUI 時的一項需求。儘管這些只是簡單的示例,但它們提供了一個堅實的基礎,您可以在此基礎上構建更復雜的應用程式。

永遠不要忘記,持續練習是掌握任何技能的關鍵。所以不要止步於此。嘗試使用 PIL 進行各種影像修改,並使用 Tkinter 開發各種 GUI。

更新於:2023年7月18日

瀏覽量 1K+

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告