🎓 الدرس 29 من Tkinter: إدراج الصور بصيغ متعددة باستخدام مكتبة Pillow (PIL)

🎯 الهدف: تعلم كيفية عرض صور بصيغة JPEG أو PNG ذات جودة عالية أو صور ذات حجم كبير داخل تطبيق Tkinter باستخدام مكتبة خارجية اسمها Pillow.

🎓 الدرس 29 من Tkinter: إدراج الصور بصيغ متعددة باستخدام مكتبة Pillow (PIL)

🧱 ما هي مكتبة Pillow (PIL)؟

Pillow هي مكتبة خارجية تُستخدم لمعالجة الصور في Python، وتُمكِّن Tkinter من عرض صور غير مدعومة مباشرة مثل:

  • JPEG
  • JPG
  • صور PNG كبيرة أو شفافة
  • التحكم في أبعاد الصورة (الطول والعرض)

📦 التثبيت:

pip install Pillow

📌 طريقة الاستخدام مع Tkinter:

from PIL import Image, ImageTk

✅ مثال عملي:

🎯 عرض صورة بصيغة JPEG وتغيير حجمها

import tkinter as tk
from PIL import Image, ImageTk

# إنشاء النافذة
window = tk.Tk()
window.title("عرض صورة JPEG باستخدام Pillow")
window.geometry("500x400")

# تحميل الصورة الأصلية (بأي صيغة مثل JPG أو PNG)
img = Image.open("example.jpg")   # تأكد من وجود الصورة في نفس المجلد

# تغيير حجم الصورة (اختياري)
img = img.resize((300, 200))

# تحويل الصورة إلى تنسيق متوافق مع Tkinter
photo = ImageTk.PhotoImage(img)

# عرض الصورة في Label
img_label = tk.Label(window, image=photo)
img_label.pack(pady=20)

# نص أسفل الصورة
tk.Label(window, text="صورة تم تحميلها باستخدام مكتبة Pillow", font=("Arial", 12)).pack()

window.mainloop()

💡 ملاحظات:

النقطة التوضيح
Image.open("file.jpg") لفتح الصورة بأي صيغة
resize((عرض, طول)) لتغيير أبعاد الصورة يدويًا
ImageTk.PhotoImage() لتحويل الصورة إلى تنسيق يدعمه Tkinter

✅ متى تستخدم Pillow؟

الحالة هل تحتاج Pillow؟
صورة PNG صغيرة لا تحتاج
صورة JPEG أو صورة كبيرة نعم
تغيير حجم الصور داخل البرنامج نعم


✅ التمرين: "معرض صور مصغرة"

🎯 المطلوب:

  1. أنشئ نافذة تحتوي على صورة بصيغة JPEG أو PNG كبيرة.
  2. استخدم مكتبة Pillow لتغيير حجم الصورة قبل عرضها.
  3. أضف عنوانًا أسفل الصورة مثل: "صورة من المعرض".
  4. تأكد من أن النافذة تعرض الصورة بحجم مناسب مهما كانت أبعادها.

🧾 الحل الكامل:

✳️ تأكد من وجود صورة باسم gallery.jpg (أو أي اسم تريده) في نفس المجلد.

import tkinter as tk
from PIL import Image, ImageTk

# إنشاء النافذة
window = tk.Tk()
window.title("معرض الصور")
window.geometry("500x400")

# تحميل الصورة الأصلية
original_img = Image.open("gallery.jpg")

# تغيير الحجم المناسب للعرض
resized_img = original_img.resize((400, 250))  # العرض × الطول

# تحويلها إلى تنسيق يدعمه Tkinter
photo = ImageTk.PhotoImage(resized_img)

# عرض الصورة في Label
img_label = tk.Label(window, image=photo)
img_label.pack(pady=10)

# عنوان أسفل الصورة
title_label = tk.Label(window, text="صورة من المعرض", font=("Arial", 14, "bold"))
title_label.pack()

# تشغيل التطبيق
window.mainloop()

💡 شرح سريع:

الكود المعنى
Image.open() لفتح الصورة بأي صيغة (JPG، PNG...)
resize((400, 250)) لتصغير الصورة حتى تناسب واجهة التطبيق
ImageTk.PhotoImage() لتحويل الصورة إلى تنسيق مناسب لـ Tkinter
Label(..., image=...) لعرض الصورة داخل النافذة

✅ النتيجة المتوقعة:

واجهة أنيقة تعرض صورة مصغّرة من المعرض وتحتها عنوان بسيط.

إرسال تعليق

0 تعليقات