เพื่อทำงานกับรูปภาพ ไลบรารี Python มีแพ็กเกจ Pillow หรือ PIL ที่ช่วยให้แอปพลิเคชันนำเข้ารูปภาพและดำเนินการต่างๆ ได้
สมมติว่าเราต้องการปรับขนาดรูปภาพแบบไดนามิกตามขนาดหน้าต่าง ในกรณีนี้ ต้องทำตามขั้นตอน:
- เปิดไฟล์รูปภาพในแอปพลิเคชัน Tkinter
- สร้าง Canvas Widget และใช้ create_image(**options) วางรูปภาพที่โหลดใน canvas
- กำหนดฟังก์ชันปรับขนาดรูปภาพที่โหลด
- ผูกฟังก์ชันกับการกำหนดค่าหน้าต่างหลัก
ตัวอย่าง
# นำเข้าไลบรารีที่จำเป็น
from tkinter import *
from PIL import ImageTk, Image
# สร้างอินสแตนซ์ของ Tkinter Frame
win = Tk()
# กำหนดขนาดของ Tkinter Frame
win.geometry("700x450")
# เปิดไฟล์รูปภาพ
bg = ImageTk.PhotoImage(file="tutorialspoint.png")
# สร้าง Canvas
canvas = Canvas(win, width=700, height=3500)
canvas.pack(fill=BOTH, expand=True)
# เพิ่มรูปภาพใน Canvas
canvas.create_image(0, 0, image=bg, anchor='nw')
# ฟังก์ชันปรับขนาดหน้าต่าง
def resize_image(e):
global image, resized, image2
# เปิดรูปเพื่อปรับขนาด
image = Image.open("tutorialspoint.png")
# ปรับขนาดรูปตาม width และ height ของ root
resized = image.resize((e.width, e.height), Image.ANTIALIAS)
image2 = ImageTk.PhotoImage(resized)
canvas.create_image(0, 0, image=image2, anchor='nw')
# ผูกฟังก์ชันกับการกำหนดค่าหน้าต่างหลัก
win.bind("", resize_image)
win.mainloop()
ผลลัพธ์
การรันโค้ดจะแสดงหน้าต่างที่มีรูปภาพซึ่งสามารถปรับขนาดได้แบบไดนามิก
