بعد الأساسيات · الصور والرسومالمثال 6 من 6

المشروع: مولّد بطاقات العيد

  • def
  • Path
  • save

نجمع كل ما سبق في دالة واحدة make_card(): لوحة، وإطار، وهلال، وتهنئة، واسم. حلقة واحدة تصنع بطاقة لكل فرد في القاموس وتحفظها في مجلد eid_cards، ثم نعرض البطاقات الأربع معًا.

eid-project-cards.py▶ شغّل
# المشروع: مولّد بطاقات العيد لكل أفراد العائلة
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، وأرسلها لعائلتك.

جرّب أن تغيّر رقمًا أو لونًا في الكود، ثم شغّله من جديد وشاهد ما يتغيّر.▶ افتح المثال في المحرر