main
John Lauer Component record for ltc2945cms-pbf: files batch 3 16c3b96 23h ago
#!/usr/bin/env python3
"""Rasterize a polyline-only SVG (chip outline art) to PNG with Pillow. usage: svg_poly_png.py in.svg out.png [size] [bg]"""
import sys, re
from PIL import Image, ImageDraw
src, out = sys.argv[1], sys.argv[2]; size = int(sys.argv[3]) if len(sys.argv) > 3 else 320
bg = sys.argv[4] if len(sys.argv) > 4 else "#0d1117"
s = open(src).read()
vb = [float(v) for v in re.search(r'viewBox="([^"]+)"', s).group(1).split()]
k = size / vb[2]
im = Image.new("RGB", (size, int(vb[3] * k)), bg); d = ImageDraw.Draw(im)
for m in re.finditer(r'<(polyline|polygon)[^>]*points="([^"]+)"[^>]*?(?:stroke="([^"]+)")?[^>]*/>', s):
    pts = [tuple(float(v) for v in p.split(",")) for p in m.group(2).split()]
    pts = [((x - vb[0]) * k, (y - vb[1]) * k) for x, y in pts]
    col = m.group(3) or "#e6edf3"
    if len(pts) > 1: d.line(pts, fill=col, width=max(1, int(1.5 * k)))
im.save(out); print(out, im.size)