站点:纯静态 HTML + CSS + 原生 JS,零框架零构建
页面:首页 / 合作品牌 / 荣誉资质 / 客户案例 / 关于我们
内容:
- site/ 站点本体(含已压缩 webp 图片,约 4.8 MB)
- deploy/ Docker Compose / Caddy / Apache 部署配置
- _tools/ 开发自检脚本与部署脚本
- Dockerfile 自建 nginx 镜像方案
- README.md 项目文档
设计:品牌黄 #ffc107 + 白,深蓝仅用于页脚;菜单长期置顶;
交互动效只加在关键词与区块级元素上。
素材说明:原始素材(背景图/老网站/方案/荣誉资质/合作品牌,约 290 MB)
未纳入版本控制,站点使用的是 site/assets 内已处理压缩的图片。
62 lines
2.1 KiB
Python
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 已按视觉重量归一化")
|