Files
xuanheng-website/_tools/build_brands_v2.py
T
dsh f81d41c5ca 初始化:炫恒网络官网(五个页面)
站点:纯静态 HTML + CSS + 原生 JS,零框架零构建
页面:首页 / 合作品牌 / 荣誉资质 / 客户案例 / 关于我们

内容:
- site/          站点本体(含已压缩 webp 图片,约 4.8 MB)
- deploy/        Docker Compose / Caddy / Apache 部署配置
- _tools/        开发自检脚本与部署脚本
- Dockerfile     自建 nginx 镜像方案
- README.md      项目文档

设计:品牌黄 #ffc107 + 白,深蓝仅用于页脚;菜单长期置顶;
      交互动效只加在关键词与区块级元素上。

素材说明:原始素材(背景图/老网站/方案/荣誉资质/合作品牌,约 290 MB)
         未纳入版本控制,站点使用的是 site/assets 内已处理压缩的图片。
2026-10-13 16:12:41 +08:00

62 lines
2.1 KiB
Python

# -*- coding: utf-8 -*-
"""按视觉重量统一品牌 logo:去掉原图自带的巨大留白,按内容高度归一化,
统一放在固定画布里垂直居中。同时给 favicon 生成更清晰的版本。
运行: python _tools/build_brands_v2.py
"""
import os
from PIL import Image
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SRC = os.path.join(ROOT, "合作品牌")
OUT = os.path.join(ROOT, "site", "assets", "img", "brands")
# 宽扁的标志给大一点高度,接近方形的给小一点,视觉重量才均衡
TARGET_H = {
"ruijie": 54, # Ruijie 锐捷 —— 很宽
"cisco": 70, # CISCO —— 中等
"h3c": 46, # H3C —— 很宽
"microsoft": 44, # Microsoft —— 极宽
"vmware": 40, # vmware —— 极宽且扁
"citrix": 54, # CITRIX
"juniper": 50, # JUNIPER —— 宽
"radware": 46, # radware —— 很宽
}
W, H = 360, 240 # 画布:5:3,横向留白更合理
FILES = {
"锐捷.png": "ruijie",
"思科.png": "cisco",
"华三.png": "h3c",
"Microsoft.png": "microsoft",
"vmware.png": "vmware",
"citrix.png": "citrix",
"juniper.png": "juniper",
"radware.png": "radware",
}
os.makedirs(OUT, exist_ok=True)
for src, slug in FILES.items():
p = os.path.join(SRC, src)
if not os.path.exists(p):
print(" ! 缺少 " + src)
continue
im = Image.open(p).convert("RGBA")
bbox = im.split()[3].getbbox()
if bbox:
im = im.crop(bbox)
th = TARGET_H[slug]
tw = max(1, round(im.width * th / im.height))
if tw > W - 32: # 太宽就按宽度约束
tw = W - 32
th = max(1, round(im.height * tw / im.width))
im = im.resize((tw, th), Image.LANCZOS)
canvas = Image.new("RGBA", (W, H), (0, 0, 0, 0))
canvas.paste(im, ((W - tw) // 2, (H - th) // 2), im)
out = os.path.join(OUT, slug + ".webp")
canvas.save(out, "WEBP", quality=90, method=6)
print(" %-10s 内容 %dx%d 画布 %dx%d %5.1f KB" % (slug, tw, th, W, H, os.path.getsize(out) / 1024))
print("完成:品牌 logo 已按视觉重量归一化")