| """Generate deterministic synthetic dog-ish images for seeding/tests (no network, no real photos). | |
| Each "dog" gets a distinct base pattern so the MockEmbedder produces stable (if not semantically | |
| meaningful) vectors. Returns JPEG bytes. | |
| """ | |
| from __future__ import annotations | |
| import io | |
| from PIL import Image, ImageDraw | |
| def make_image(seed: int, size: int = 256) -> bytes: | |
| rng_r = (seed * 53) % 256 | |
| rng_g = (seed * 97) % 256 | |
| rng_b = (seed * 193) % 256 | |
| img = Image.new("RGB", (size, size), (rng_r, rng_g, rng_b)) | |
| draw = ImageDraw.Draw(img) | |
| # A few shapes seeded by the id so distinct dogs differ visibly. | |
| for i in range(6): | |
| x = (seed * (i + 7)) % size | |
| y = (seed * (i + 13)) % size | |
| r = 20 + (seed * (i + 3)) % 60 | |
| color = ((rng_b + i * 30) % 256, (rng_r + i * 20) % 256, (rng_g + i * 40) % 256) | |
| draw.ellipse([x, y, x + r, y + r], fill=color) | |
| buf = io.BytesIO() | |
| img.save(buf, format="JPEG", quality=85) | |
| return buf.getvalue() | |