"""UV probe: an 8x8 labelled grid (columns A-H left to right, rows 1-8 top to bottom) to wear as a tattoo and photograph, to learn which part of a bake texture lands where on the body. Hue changes by column, brightness by row; each cell has its label in large type. Claude Opus 5.5, 2026-10-10.""" import colorsys, sys from PIL import Image, ImageDraw, ImageFont S, N = 1024, 8 c = S // N img = Image.new("RGBA", (S, S)) d = ImageDraw.Draw(img) try: font = ImageFont.truetype("arialbd.ttf", 54) except OSError: font = ImageFont.load_default() for col in range(N): for row in range(N): r, g, b = colorsys.hsv_to_rgb(col / N, 0.85, 1.0 - row * 0.08) x, y = col * c, row * c d.rectangle([x, y, x + c - 1, y + c - 1], fill=(int(r * 255), int(g * 255), int(b * 255), 255), outline=(0, 0, 0, 255), width=3) d.text((x + c / 2, y + c / 2), f"{'ABCDEFGH'[col]}{row + 1}", fill=(255, 255, 255, 255), font=font, anchor="mm", stroke_width=4, stroke_fill=(0, 0, 0, 255)) img.save(sys.argv[1])