diff --git a/docs/archive_static_backup/menu_city_center.png b/docs/archive_static_backup/menu_city_center.png index d000ac7..37e20a3 100644 Binary files a/docs/archive_static_backup/menu_city_center.png and b/docs/archive_static_backup/menu_city_center.png differ diff --git a/docs/archive_static_backup/menu_city_partner.png b/docs/archive_static_backup/menu_city_partner.png index 2d4ccf0..5d84e4b 100644 Binary files a/docs/archive_static_backup/menu_city_partner.png and b/docs/archive_static_backup/menu_city_partner.png differ diff --git a/docs/archive_static_backup/menu_province_center.png b/docs/archive_static_backup/menu_province_center.png index 28bcc0f..d109914 100644 Binary files a/docs/archive_static_backup/menu_province_center.png and b/docs/archive_static_backup/menu_province_center.png differ diff --git a/docs/archive_static_backup/menu_province_partner.png b/docs/archive_static_backup/menu_province_partner.png index 1e92fb8..c1a0601 100644 Binary files a/docs/archive_static_backup/menu_province_partner.png and b/docs/archive_static_backup/menu_province_partner.png differ diff --git a/docs/archive_static_backup/menu_region_branch.png b/docs/archive_static_backup/menu_region_branch.png index 9673624..7475c11 100644 Binary files a/docs/archive_static_backup/menu_region_branch.png and b/docs/archive_static_backup/menu_region_branch.png differ diff --git a/scripts/generate_banners.py b/scripts/generate_banners.py index 1180a18..641db9c 100644 --- a/scripts/generate_banners.py +++ b/scripts/generate_banners.py @@ -295,45 +295,65 @@ def build_partner_centers_menu_icons(): font_sub = ImageFont.truetype(font_text, 22) font_sub_3 = ImageFont.truetype(font_text, 19) - menus = [ - ("menu_city_center.png", "市级", "运营", (25, 45, 80), (230, 200, 130), False), - ("menu_city_partner.png", "市级", "合伙", (85, 25, 30), (225, 185, 120), False), - ("menu_province_center.png", "省级", "服务", (20, 55, 45), (145, 215, 180), False), - ("menu_province_partner.png", "省级", "合伙", (65, 28, 68), (240, 195, 150), False), - ("menu_region_branch.png", "大区", "分公司", (32, 30, 26), (245, 210, 135), True), + # 5个清新渐变配置: (文件名, t1, t2, c_top, c_bottom, is_3) + items = [ + ('menu_city_center.png', '市级', '运营', (72, 168, 252), (32, 122, 235), False), + ('menu_city_partner.png', '市级', '合伙', (252, 120, 100), (232, 68, 72), False), + ('menu_province_center.png', '省级', '服务', (62, 198, 146), (28, 162, 112), False), + ('menu_province_partner.png', '省级', '合伙', (168, 118, 230), (132, 78, 208), False), + ('menu_region_branch.png', '大区', '分公司', (248, 182, 72), (222, 138, 38), True), ] out_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../public/uploads/decorate')) os.makedirs(out_dir, exist_ok=True) - for filename, t1, t2, bg_c, fg_c, is_3 in menus: - size = (160, 160) - img = Image.new('RGBA', size, (0, 0, 0, 0)) - d = ImageDraw.Draw(img) + for fn, t1, t2, c1, c2, is_3 in items: + size = 160 + base = Image.new('RGBA', (size, size), (0, 0, 0, 0)) - # Soft background circle with border - d.ellipse([6, 6, 154, 154], fill=(*bg_c, 245), outline=(*fg_c, 210), width=3) - d.ellipse([14, 14, 146, 146], outline=(*fg_c, 85), width=1) + # 渐变 + grad = Image.new('RGBA', (size, size)) + for y in range(size): + r = y / size + cr = int(c1[0] * (1 - r) + c2[0] * r) + cg = int(c1[1] * (1 - r) + c2[1] * r) + cb = int(c1[2] * (1 - r) + c2[2] * r) + for x in range(size): + grad.putpixel((x, y), (cr, cg, cb, 255)) + + mask = Image.new('L', (size, size), 0) + m_draw = ImageDraw.Draw(mask) + m_draw.ellipse([6, 6, 154, 154], fill=255) - # Text 1 + base.paste(grad, (0, 0), mask) + + d = ImageDraw.Draw(base) + # 高级细双环与微高光 + d.ellipse([6, 6, 154, 154], outline=(255, 255, 255, 220), width=3) + d.ellipse([14, 14, 146, 146], outline=(255, 255, 255, 110), width=1) + + # 顶部轻微晨光弧线 + d.arc([16, 16, 144, 144], start=210, end=330, fill=(255, 255, 255, 140), width=2) + + # 标题 1 bbox1 = d.textbbox((0, 0), t1, font=font_menu) w1 = bbox1[2] - bbox1[0] - x1 = (160 - w1) / 2 - d.text((x1, 40), t1, font=font_menu, fill=(*fg_c, 255)) + d.text(((size - w1) / 2, 38), t1, font=font_menu, fill=(255, 255, 255, 255)) - # Text 2 + # 标题 2 cur_sub_font = font_sub_3 if is_3 else font_sub bbox2 = d.textbbox((0, 0), t2, font=cur_sub_font) w2 = bbox2[2] - bbox2[0] - x2 = (160 - w2) / 2 y2 = 98 if is_3 else 96 - d.text((x2, y2), t2, font=cur_sub_font, fill=(245, 245, 245, 230)) + d.text(((size - w2) / 2, y2), t2, font=cur_sub_font, fill=(255, 255, 255, 240)) - img.save(os.path.join(out_dir, filename)) - print(filename, "generated at", out_dir) + save_path = os.path.join(out_dir, fn) + base.save(save_path) + print("Fresh icon generated at", save_path) build_partner_centers_menu_icons() + def build_trust_bar(): size = (1420, 110) img = Image.new('RGBA', size, (0, 0, 0, 0))