"""Génère assets/carte_exemple.png : une fausse carte des vins de bistrot pour la démo.""" from pathlib import Path from PIL import Image, ImageDraw, ImageFont LIGNES = [("LA CARTE DES VINS", None), ("", None), ("BULLES", None), ("Crémant de Loire, Domaine des Coteaux", "32 €"), ("Champagne Brut, Maison Laurent", "68 €"), ("", None), ("BLANCS", None), ("Muscadet Sèvre-et-Maine 2023", "24 €"), ("Sancerre, Les Caillottes 2022", "42 €"), ("Alsace Gewurztraminer 2021", "34 €"), ("Chablis 1er Cru 2021", "48 €"), ("", None), ("ROSÉS", None), ("Côtes de Provence rosé, Château Sainte-Roseline", "33 €"), ("Tavel 2023", "30 €"), ("", None), ("ROUGES", None), ("Beaujolais-Villages 2023", "25 €"), ("Chinon, Les Picasses 2020", "29 €"), ("Côtes du Rhône, E. Guigal 2021", "27 €"), ("Saint-Émilion Grand Cru 2018", "58 €"), ("Cahors Malbec 2019", "31 €"), ("", None), ("DOUCEURS", None), ("Sauternes 2017 (50 cl)", "45 €")] root = Path(__file__).resolve().parents[1] W, H = 1100, 60 + 46 * len(LIGNES) img = Image.new("RGB", (W, H), "#FFFDF8"); d = ImageDraw.Draw(img) def font(bold, size): for p in [f"/usr/share/fonts/truetype/dejavu/DejaVuSerif{'-Bold' if bold else ''}.ttf", "/Library/Fonts/Georgia.ttf", "/System/Library/Fonts/Supplemental/Georgia.ttf"]: try: return ImageFont.truetype(p, size) except OSError: pass return ImageFont.load_default() y = 40 for txt, prix in LIGNES: titre = prix is None and txt.isupper() d.text((70, y), txt, fill="#7D1C4F" if titre else "#222", font=font(titre, 30 if titre else 26)) if prix: d.text((W - 160, y), prix, fill="#222", font=font(False, 26)) y += 46 img.save(root / "assets" / "carte_exemple.png"); print("ok", img.size)