"""Generate sample toy photos for the Gradio Examples rail (one-click demos for judges/users without a toy at hand). Simple flat illustrations in the brand palette, 640×640 PNG.""" from pathlib import Path from PIL import Image, ImageDraw OUT = Path(__file__).resolve().parent.parent / "static" / "samples" OUT.mkdir(parents=True, exist_ok=True) BG = (232, 217, 196) INK = (58, 44, 34) def canvas(): img = Image.new("RGB", (640, 640), BG) return img, ImageDraw.Draw(img) # --- plush bear --- img, d = canvas() fur = (181, 128, 63) d.ellipse((230, 150, 410, 330), fill=fur) # head d.ellipse((212, 132, 288, 208), fill=fur) # ears d.ellipse((352, 132, 428, 208), fill=fur) d.ellipse((210, 300, 430, 560), fill=fur) # body d.ellipse((281, 221, 299, 239), fill=INK) # eyes d.ellipse((341, 221, 359, 239), fill=INK) d.ellipse((309, 259, 331, 281), fill=INK) # nose img.save(OUT / "plush-bear.png") # --- toy robot --- img, d = canvas() body = (122, 138, 160) d.rounded_rectangle((220, 200, 420, 400), 24, fill=body) # torso d.rounded_rectangle((255, 110, 385, 215), 18, fill=body) # head d.ellipse((285, 140, 305, 160), fill=INK) d.ellipse((335, 140, 355, 160), fill=INK) d.rectangle((300, 178, 340, 186), fill=INK) d.rectangle((170, 230, 215, 360), fill=body) # arms d.rectangle((425, 230, 470, 360), fill=body) d.rectangle((255, 405, 300, 520), fill=body) # legs d.rectangle((340, 405, 385, 520), fill=body) d.line((318, 110, 318, 70), fill=INK, width=6) # antenna d.ellipse((308, 50, 330, 72), fill=(216, 84, 47)) img.save(OUT / "toy-robot.png") # --- building blocks --- img, d = canvas() cols = [(216, 84, 47), (43, 179, 156), (232, 181, 74)] d.rounded_rectangle((170, 360, 320, 510), 12, fill=cols[0]) d.rounded_rectangle((330, 360, 480, 510), 12, fill=cols[1]) d.rounded_rectangle((250, 200, 400, 350), 12, fill=cols[2]) for x0, y0 in [(195, 385), (355, 385), (275, 225)]: d.ellipse((x0 + 35, y0 + 35, x0 + 65, y0 + 65), outline=INK, width=5) img.save(OUT / "building-blocks.png") print("3 samples →", OUT)