| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- from PIL import Image, ImageDraw
- ICON_SIZE = 81
- OUTPUT_DIR = "D:/work/绿水青山/清道夫App/src/static/tabbar"
- # 颜色
- NORMAL_BG = "#f3f4f6"
- NORMAL_FG = "#9ca3af"
- ACTIVE_BG = "#eff6ff"
- ACTIVE_FG = "#3b82f6"
- def draw_rounded_rect(draw, xy, radius, fill):
- x1, y1, x2, y2 = xy
- draw.rounded_rectangle(xy, radius=radius, fill=fill)
- def draw_home(img, color):
- draw = ImageDraw.Draw(img)
- # 房子主体
- draw.polygon([(40, 20), (20, 40), (60, 40)], fill=color)
- draw.rectangle([25, 40, 55, 62], fill=color)
- # 门
- draw.rectangle([35, 50, 45, 62], fill="white")
- def draw_task(img, color):
- draw = ImageDraw.Draw(img)
- # 旗帜
- draw.rectangle([38, 18, 42, 58], fill=color)
- draw.polygon([(42, 18), (58, 26), (42, 34)], fill=color)
- # 底座
- draw.ellipse([32, 58, 48, 62], fill=color)
- def draw_my(img, color):
- draw = ImageDraw.Draw(img)
- # 头
- draw.ellipse([30, 18, 50, 38], fill=color)
- # 身体
- draw.rounded_rectangle([24, 40, 56, 66], radius=8, fill=color)
- def create_icon(name, active=False):
- bg = ACTIVE_BG if active else NORMAL_BG
- fg = ACTIVE_FG if active else NORMAL_FG
- img = Image.new("RGBA", (ICON_SIZE, ICON_SIZE), (255, 255, 255, 0))
- draw = ImageDraw.Draw(img)
- # 背景圆角方块
- draw.rounded_rectangle([4, 4, ICON_SIZE-4, ICON_SIZE-4], radius=16, fill=bg)
- if name == "home":
- draw_home(img, fg)
- elif name == "task":
- draw_task(img, fg)
- elif name == "my":
- draw_my(img, fg)
- suffix = "-active" if active else ""
- img.save(f"{OUTPUT_DIR}/{name}{suffix}.png", "PNG")
- if __name__ == "__main__":
- for name in ["home", "task", "my"]:
- create_icon(name, active=False)
- create_icon(name, active=True)
- print("tabBar icons generated.")
|