# /// script # requires-python = ">=3.10" # dependencies = ["pillow"] # /// """Genereer downscaled WebP-varianten voor responsive srcset. Usage: uv run --native-tls scripts/img-variants.py [quality] Schrijft -.webp voor elke breedte kleiner dan het origineel.""" import os import sys from PIL import Image inp = sys.argv[1] widths = [int(w) for w in sys.argv[2].split(",")] quality = int(sys.argv[3]) if len(sys.argv) > 3 else 80 img = Image.open(inp) ow, oh = img.size stem, ext = os.path.splitext(inp) for w in widths: if w >= ow: print(f"skip {w} (>= origineel {ow})") continue h = round(oh * w / ow) resized = img.resize((w, h), Image.LANCZOS) out = f"{stem}-{w}.webp" resized.save(out, "WEBP", quality=quality, method=6) print(f"saved {out} ({w}x{h}, {os.path.getsize(out) // 1024} KB)")