| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- import sys, os, base64, io
- sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
- from PIL import Image
- from stitch_core import stitch_images
- def make(color, w=100, h=80):
- img = Image.new("RGB", (w, h), color)
- buf = io.BytesIO()
- img.save(buf, "PNG")
- return base64.b64encode(buf.getvalue()).decode()
- # horizontal
- res = stitch_images([make("red", 100, 80), make("blue", 120, 80)], direction="horizontal")
- assert res["width"] == 220 and res["height"] == 80, f"horizontal failed: {res}"
- print("horizontal OK:", res["width"], "x", res["height"])
- # vertical with spacing
- res = stitch_images([make("green", 100, 80), make("yellow", 100, 60)], direction="vertical", spacing=10)
- assert res["width"] == 100 and res["height"] == 150, f"vertical failed: {res}"
- print("vertical OK:", res["width"], "x", res["height"])
- # grid 2x2
- imgs = [make(c, 50, 50) for c in ["red", "green", "blue", "yellow"]]
- res = stitch_images(imgs, direction="grid", columns=2, spacing=5)
- assert res["width"] == 105 and res["height"] == 105, f"grid failed: {res}"
- print("grid OK:", res["width"], "x", res["height"])
- # fit_width
- res = stitch_images([make("cyan", 100, 80), make("magenta", 60, 40)], direction="horizontal", resize_mode="fit_width")
- assert res["width"] == 200, f"fit_width failed: {res}"
- print("fit_width OK:", res["width"], "x", res["height"])
- # error on < 2 images
- try:
- stitch_images([make("red")], direction="horizontal")
- raise AssertionError("should have raised ValueError")
- except ValueError:
- print("error-check OK")
- print("ALL TESTS PASSED")
|