Files
helvoirtgevelreiniging.nl/scripts/img-variants.py
T

29 lines
870 B
Python

# /// script
# requires-python = ">=3.10"
# dependencies = ["pillow"]
# ///
"""Genereer downscaled WebP-varianten voor responsive srcset.
Usage: uv run --native-tls scripts/img-variants.py <input.webp> <w1,w2,...> [quality]
Schrijft <stem>-<w>.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)")