from PIL import Image BG = (26, 26, 46) SKIN = (150, 100, 70) SKIN_DARK = (120, 80, 55) SHIRT = (120, 60, 40) SHIRT_DARK = (95, 45, 30) PANTS = (40, 40, 50) PANTS_DARK = (30, 30, 40) BLACK = (20, 20, 20) WHITE = (240, 240, 240) RED = (200, 50, 50) GRAY = (120, 125, 130) S = 32 g = [[BG] * S for _ in range(S)] def rect(t, b, l, r, c): for y in range(t, b + 1): for x in range(l, r + 1): g[y][x] = c def hline(y, l, r, c): for x in range(l, r + 1): g[y][x] = c def vline(x, t, b, c): for y in range(t, b + 1): g[y][x] = c # --- HEAD (rows 4-10), bald, brown skin --- rect(4, 10, 13, 18, SKIN) # face shading vline(13, 4, 10, SKIN_DARK) vline(18, 4, 10, SKIN_DARK) # ears g[5][12] = SKIN; g[6][12] = SKIN g[5][19] = SKIN; g[6][19] = SKIN # --- SUNGLASSES (rows 6-8) --- rect(6, 8, 13, 15, BLACK) rect(6, 8, 16, 18, BLACK) hline(7, 13, 18, BLACK) # bridge # lens glint g[6][14] = WHITE; g[6][17] = WHITE # --- MOUTH (row 9) --- g[9][15] = SKIN_DARK; g[9][16] = SKIN_DARK # --- NECK (row 11) --- rect(11, 11, 15, 16, SKIN_DARK) # --- TORSO / SHIRT (rows 12-21) --- rect(12, 21, 11, 20, SHIRT) vline(11, 12, 21, SHIRT_DARK) vline(20, 12, 21, SHIRT_DARK) # collar hline(12, 12, 19, SHIRT_DARK) # --- ARMS (rows 12-19) --- rect(12, 19, 8, 10, SHIRT) rect(12, 19, 21, 23, SHIRT) # hands rect(18, 19, 8, 10, SKIN) rect(18, 19, 21, 23, SKIN) # --- BLIND CANE (rows 12-30), held in right hand --- # white cane with red tip, vertical line at x=24 vline(24, 12, 28, WHITE) vline(24, 29, 30, RED) # hand grip on cane g[18][24] = SKIN; g[19][24] = SKIN # --- PANTS (rows 22-28) --- rect(22, 28, 12, 19, PANTS) vline(12, 22, 28, PANTS_DARK) vline(19, 22, 28, PANTS_DARK) # legs split vline(15, 22, 28, PANTS_DARK) # --- SHOES (rows 29-30) --- rect(29, 30, 12, 15, BLACK) rect(29, 30, 16, 19, BLACK) # --- GROUND (row 31) --- hline(31, 8, 24, GRAY) # Scale up img = Image.new("RGBA", (256, 256), BG + (255,)) pixels = img.load() scale = 256 // S for y in range(S): for x in range(S): c = g[y][x] if c == BG: continue for dy in range(scale): for dx in range(scale): px = x * scale + dx py = y * scale + dy if 0 <= px < 256 and 0 <= py < 256: pixels[px, py] = c + (255,) img.save("slohmaier.png", "PNG", optimize=True) print("Saved slohmaier.png 256x256")