#!/usr/bin/env python3 # Puts the tutorial pictures into the book: every NN-name.png a tutorial scene took (in # screenshots/tutN/, where the harness leaves them) is copied to docs/images/tutorials/, scaled to # the width a page needs and reduced to a palette, so ten tutorials of full-window screenshots do # not make Forge.pdf ten times its size. # # python3 util/forgeShots.py [screenshots/tut1 ...] # # With no arguments every screenshots/tut* folder is taken. import glob import os import sys from PIL import Image ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) OUT = os.path.join(ROOT, "docs", "images", "tutorials") WIDTH = 768 def place(path): img = Image.open(path).convert("RGB") if img.width > WIDTH: img = img.resize((WIDTH, img.height * WIDTH // img.width), Image.LANCZOS) img = img.quantize(colors=128, method=Image.Quantize.MEDIANCUT) img.save(os.path.join(OUT, os.path.basename(path)), optimize=True) if __name__ == "__main__": folders = sys.argv[1:] or sorted(glob.glob(os.path.join(ROOT, "screenshots", "tut*"))) os.makedirs(OUT, exist_ok=True) count = 0 for folder in folders: for path in sorted(glob.glob(os.path.join(folder, "[0-9][0-9]-*.png"))): place(path) count += 1 print("%d pictures into %s" % (count, OUT))