🎯 الهدف: تعلم كيفية عرض صور بصيغة JPEG أو PNG ذات جودة عالية أو صور ذات حجم كبير داخل تطبيق Tkinter باستخدام مكتبة خارجية اسمها Pillow.
🧱 ما هي مكتبة 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 أو صورة كبيرة | نعم |
تغيير حجم الصور داخل البرنامج | نعم |
✅ التمرين: "معرض صور مصغرة"
🎯 المطلوب:
- أنشئ نافذة تحتوي على صورة بصيغة JPEG أو PNG كبيرة.
- استخدم مكتبة Pillow لتغيير حجم الصورة قبل عرضها.
- أضف عنوانًا أسفل الصورة مثل: "صورة من المعرض".
- تأكد من أن النافذة تعرض الصورة بحجم مناسب مهما كانت أبعادها.
🧾 الحل الكامل:
✳️ تأكد من وجود صورة باسم
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 تعليقات