المشروع: مولّد بطاقات العيد
defPathsave
نجمع كل ما سبق في دالة واحدة make_card(): لوحة، وإطار، وهلال، وتهنئة، واسم. حلقة واحدة تصنع بطاقة لكل فرد في القاموس وتحفظها في مجلد eid_cards، ثم نعرض البطاقات الأربع معًا.
# المشروع: مولّد بطاقات العيد لكل أفراد العائلة
from pathlib import Path
from PIL import Image, ImageDraw, ImageFont
import matplotlib
import matplotlib.pyplot as plt
import arabic_reshaper
FONT_FILE = Path(matplotlib.get_data_path()) / "fonts" / "ttf" / "DejaVuSans.ttf"
BIG = ImageFont.truetype(str(FONT_FILE), 46, layout_engine=ImageFont.Layout.BASIC)
SMALL = ImageFont.truetype(str(FONT_FILE), 26, layout_engine=ImageFont.Layout.BASIC)
def ar(text):
return arabic_reshaper.reshape(text)[::-1]
def make_card(name, color):
card = Image.new("RGB", (600, 400), color)
draw = ImageDraw.Draw(card)
draw.rectangle((15, 15, 585, 385), outline="#f5b83d", width=6)
draw.ellipse((470, 40, 550, 120), fill="#f5b83d")
draw.ellipse((490, 30, 570, 110), fill=color)
draw.text((300, 150), ar("عيدكم مبارك"), font=BIG, fill="white", anchor="mm")
draw.text((300, 240), ar("إلى: " + name), font=SMALL, fill="#f5b83d", anchor="mm")
draw.text((300, 340), "tegdar.com", font=SMALL, fill="#cfe7e3", anchor="mm")
return card
family = {
"أمي الغالية": "#0f766e",
"أبي العزيز": "#134e4a",
"جدتي": "#0a2e2b",
"نورة": "#7346d1",
}
folder = Path("eid_cards")
folder.mkdir(exist_ok=True)
cards = []
for number, (name, color) in enumerate(family.items(), start=1):
card = make_card(name, color)
card.save(folder / f"card_{number}.png")
cards.append(card)
for file in sorted(folder.iterdir()):
print(file.name, "·", Image.open(file).size)
fig, axes = plt.subplots(2, 2, figsize=(9, 6))
for ax, card in zip(axes.flat, cards):
ax.imshow(card)
ax.axis("off")
plt.show()المخرجات
card_1.png · (600, 400) card_2.png · (600, 400) card_3.png · (600, 400) card_4.png · (600, 400)

في صفحة ▶ Run تُحفظ الملفات في ذاكرة المتصفّح وتختفي بعد التحديث. شغّل المثال على جهازك لتجد الصور في مجلد
eid_cards، وأرسلها لعائلتك.
جرّب أن تغيّر رقمًا أو لونًا في الكود، ثم شغّله من جديد وشاهد ما يتغيّر.▶ افتح المثال في المحرر