# Mako: zooms of the user's reference sheet with pixel rulers, to read the outlines off (plain Python + Pillow). # python mk_zoom.py name x0 y0 x1 y1 k [grid] -> reference/z_.png (k x zoom, a line every `grid` px, labels every 5) import os, sys from PIL import Image, ImageDraw HERE = os.path.dirname(os.path.abspath(__file__)) REF = os.path.join(os.path.dirname(HERE), "reference") im = Image.open(os.path.join(REF, "user_reference.webp")).convert("RGB") name, x0, y0, x1, y1, k = sys.argv[1], *map(int, sys.argv[2:7]) g = int(sys.argv[7]) if len(sys.argv) > 7 else 10 c = im.crop((x0, y0, x1, y1)).resize(((x1 - x0) * k, (y1 - y0) * k), Image.NEAREST) pad = 34 out = Image.new("RGB", (c.width + pad, c.height + pad), "white") out.paste(c, (pad, pad)) d = ImageDraw.Draw(out) for x in range((x0 // g + 1) * g, x1, g): X = pad + (x - x0) * k major = x % (5 * g) == 0 d.line([(X, pad), (X, out.height)], fill=(255, 0, 255) if major else (120, 200, 255), width=1) if major: d.text((X - 10, 4), str(x), fill=(0, 0, 0)) for y in range((y0 // g + 1) * g, y1, g): Y = pad + (y - y0) * k major = y % (5 * g) == 0 d.line([(pad, Y), (out.width, Y)], fill=(255, 0, 255) if major else (120, 200, 255), width=1) if major: d.text((2, Y - 6), str(y), fill=(0, 0, 0)) out.save(os.path.join(REF, "z_%s.png" % name)) print("z_%s.png" % name, out.size)