Add slohmaier and akpolke avatars
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
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")
|
||||
Reference in New Issue
Block a user