ClothIron / create_example_assets.py
Mihir Mithani
Initial commit: AI Virtual Garment Ironing System
c7159bc
Raw
History Blame Contribute Delete
2.56 kB
"""
Generate placeholder example images for the Gradio UI examples panel.
Run once before publishing to HuggingFace Spaces.
python create_example_assets.py
"""
import os
import numpy as np
from PIL import Image, ImageDraw, ImageFont
EXAMPLES = [
("example_shirt.jpg", "Shirt", (200, 210, 230)),
("example_tshirt.jpg", "T-Shirt", (230, 200, 200)),
("example_dress.jpg", "Dress", (200, 230, 210)),
("example_trousers.jpg", "Trousers", (210, 200, 230)),
]
def draw_wrinkle_lines(draw, x0, y0, x1, y1, color, n=12):
"""Draw random curved wrinkle lines within a bounding box."""
import random
rng = random.Random(42)
for _ in range(n):
y = rng.randint(y0, y1)
pts = []
for xi in range(x0, x1, 4):
yi = y + rng.randint(-6, 6)
pts.append((xi, yi))
for i in range(len(pts) - 1):
draw.line([pts[i], pts[i + 1]], fill=color, width=1)
def create_placeholder(filename: str, label: str, color: tuple):
W, H = 400, 600
img = Image.new("RGB", (W, H), (245, 245, 245))
draw = ImageDraw.Draw(img)
# body silhouette
draw.ellipse([130, 30, 270, 140], fill=(210, 180, 140)) # head
draw.rectangle([120, 140, 280, 420], fill=color) # torso / shirt
draw.rectangle([120, 420, 195, 590], fill=(180, 160, 120)) # left leg
draw.rectangle([205, 420, 280, 590], fill=(180, 160, 120)) # right leg
draw.rectangle([60, 150, 120, 330], fill=color) # left arm
draw.rectangle([280, 150, 340, 330], fill=color) # right arm
# wrinkle lines on shirt
wrinkle_color = tuple(max(c - 40, 0) for c in color)
draw_wrinkle_lines(draw, 125, 160, 275, 410, wrinkle_color, n=18)
draw_wrinkle_lines(draw, 65, 155, 115, 325, wrinkle_color, n=8)
draw_wrinkle_lines(draw, 285, 155, 335, 325, wrinkle_color, n=8)
# label
try:
font = ImageFont.truetype(
"/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 20
)
except Exception:
font = ImageFont.load_default()
draw.rectangle([0, 0, W, 36], fill=(40, 40, 40))
draw.text((10, 8), f"Example: {label} (wrinkled)", fill=(255, 255, 255), font=font)
out_path = os.path.join("assets", filename)
img.save(out_path, quality=92)
print(f" Saved {out_path}")
if __name__ == "__main__":
os.makedirs("assets", exist_ok=True)
for fname, lbl, col in EXAMPLES:
create_placeholder(fname, lbl, col)
print("Done — example assets saved to assets/")