文档索引

头像框出图规范

这是给画头像框的人看的规范,整份可以原样转发给画师 —— 不需要读站点源码。

一句话:头像框 = 一张正方形的透明 PNG,叠在头像上。它会出现在顶栏、讨论区、 评论区、博客列表和每个人的主页上,而且是同一个文件被缩放到 20px–120px 的各种尺寸。 所以这份规范里真正的设计底线只有一条:缩到 20px 还认得出。

速览(四条硬要求,理由都在后面):

画布 正方形,256×256(≥256)
格式 PNG,带透明通道,中央必须透出人脸
几何 外缘 = 8% 圆角的圆角方形、顶满画布;环宽 ≤ 边长的 8%
验收 缩到 20px 看一眼,再叠在头像上看一眼

站点现成的六款示例框的源码是 scripts/make-frame-demos.mjs(纯 SVG,改一改 就是一款新框);几何、命名与登记口径的权威是它和 src/lib/frame-refs.ts。 找站长要几张现成素材(ring.png、corner.png)当参照最省事。


一、它会出现在哪、有多大

显示尺寸 出现在哪
20px 博客列表的作者头像 —— 最小的一档,设计底线
24px 博客评论作者
28px 后台用户卡片
32 / 34px 顶栏、讨论区(频道列表、消息作者、会话标题、新会话弹窗)
56 / 72px 账号设置里「头像框」面板的预览
120px 个人主页右上角的大头像
约 20px 讨论 / 评论正文里的用户名片(随正文字号)

三件事由这张表推出来:

  • 一张图服务所有尺寸:不是每档画一张,是同一个文件被缩放。按最大档(120px)画, 按最小档(20px)验收。
  • 20px 是底线:那一档只剩十几个像素宽,能活下来的基本只有颜色。 想让两款框区分得开,换配色比加装饰有效。
  • 细节只在 120px(个人主页)和设置面板的预览里看得见。装饰(角标、挂件、纹理) 在那里是彩蛋;在 20–34px 上基本不存在 —— 别把它当成识别手段。

完整的落点清单(哪个页面用哪个尺寸)在 docs/frontend-styles.md §4.1; 那里改了尺寸,这里要跟着改。


二、画布与格式(硬规格)

项 要求 做不到会怎样
画布 正方形,256×256(≥256;512 也行) 非正方形会留白缩一圈(不拉伸、不裁切)
格式 PNG(真彩 + 透明通道,导出设置里的 PNG-32 / RGBA) JPEG 没有透明;GIF 的 1 位透明边缘全是锯齿;WebP / SVG 一律不收(SVG 是安全原因被硬拒的)
背景 透明。导出时别「压平 / flatten」、别垫白底 不透明 = 盖住所有人的头像,全站一起坏,而且不报错
中央 透出下面的头像 同上
体积 正常几十 KB;上限 4MB 超限的图在下发时会被拒 —— 框显示不出来,页面不报错
范围 所有内容都在画布之内 画布外的像素直接不显示(不是缩小,是切掉)

⚠️ 「中间是透的」这件事没有第二道保险。站点在服务端只能查出「这个 PNG 有没有 透明通道」,查不出「你忘了挖空中间」—— 那种错要等全站头像上都盖着一块图案才被发现。 导出之后叠一张头像看一眼是最可靠的一步(附录给了现成的叠图代码)。


三、几何:8% 圆角(最关键的一条)

站点的头像不是圆形,是圆角方形:圆角半径 = 边长的 8%(全站统一, 见 docs/frontend-styles.md §4.1)。而框的可见区域就是头像那块形状 —— 划到它外面的 像素不显示。由此有三条:

① 外缘 = 一个 8% 圆角的圆角方形,正好顶满画布四边(零边距)。

你画成 屏幕上
正好 8% 圆角、顶满四边 ✅ 与头像严丝合缝
圆角更圆 四个角露出一小块没被盖住的头像(120px 下最明显)
边缘更方 四个角被裁掉
四周留了边距 整圈往里缩 —— 小尺寸下看着像没对齐

② 环的粗细上限 = 边长的 8%。 这不是审美限制,是几何限制:头像的圆角就只有 那么点大,环再厚,内缘的圆角就被挤没了,四个角会变胖(看着像画歪了)。 换算到实际尺寸上:20px 的头像上,环最粗只有 1.6px —— 这是这套规格的物理上限。

③ 内缘圆角 = 外缘圆角 − 环宽(里外两圈圆心重合),这样环的宽度才是均匀的。 按描边(stroke)画的话,三个数是:位置 = 环宽/2、边长 = 画布 − 环宽、 圆角 = 20.48 − 环宽/2(以 256 画布为例)。

一张 256 的画布,几个现成的数:

画布边长 四角圆角(8%) 环宽上限 边中段至少透出
256 20.48px 20.48px 215px
512 40.96px 40.96px 430px

④ 中央留白。 环宽不超 8% 时,每条边的中段至少露出 84% 宽的人脸。装饰(角标、 挂件)请压在靠外的一圈里 —— 经验值是画布外缘 1/8 的带内;中央 3/4 那块是脸, 别放东西。

造型本身是自由的(角标、挂件、上下饰带、四角小图案都行),第 ②③ 条只管 均匀的环。守住两条即可:所有像素在画布内、贴着画布边的地方跟着 8% 圆角走。 示例里的「鱼干蓝」就是在环上压了四条小鱼,「角框」是把装饰放在四个角上。

最小可用的一款框(可直接存成 .svg 用浏览器打开看)

<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256">
  <!-- 环宽 w = 20(上限 20.48)。三个数都由 w 算出来:
       x/y = w/2 = 10,边长 = 256 − w = 236,圆角 = 20.48 − w/2 = 10.48 -->
  <rect x="10" y="10" width="236" height="236" rx="10.48"
        fill="none" stroke="#2563EB" stroke-width="20"/>
</svg>

改 stroke-width 时记得同时改另外三个数(公式就在注释里)。导出 PNG 时务必保留 透明背景 —— 截图 / 导出勾了「背景色」都会把中间填实。


四、小尺寸怎么看

换算很简单:256 的画布缩到 20px,就是缩到 1/12.8。所以画布上 X 像素宽的东西, 在 20px 下是 X ÷ 12.8 像素:

在 256 画布上 缩到 20px 时
20px(环宽上限) 1.6px 已经是本规格的极限
26px 约 2px 小图里勉强还算一根线
12px 不到 1px 多半只剩一条发灰的线,或者干脆没了

所以定稿前一定缩到 20px 看一眼。看的不是「好不好看」,是「还剩什么」—— 一款合格的框在那一档应该还能认出一圈有颜色的边。往 20px 上堆细节, 堆进去的都会消失,只有颜色留得住。


五、配色与主题

站点有浅色与深色两套主题(页面底色 #F8FAFC / #131517,卡片 #fff / #181A1D)。 同一张框会同时出现在两种底色上,两边都要看一眼:

  • 用饱和的中间调。示例框的配色可作基准:蓝 #2563EB(站点品牌主色)、 紫 #8b5cf6、琥珀 #f59e0b、青 #06b6d4。
  • ⚠️ 避免纯白:浅色卡片上它会消失。也避免纯黑:深色主题下糊成一片。
  • ⚠️ 别用大面积半透明填充盖住中央 —— 那会把每个人的头像染灰、染暗。 半透明适合做「往外淡出的第二圈」(示例里的「光晕」就是这么做的)。
  • 外发光 / 投影画在画布外的部分会被裁掉;要做发光感,就画在画布里面。

六、命名与交付

  • 文件名 = 小写字母 / 数字 / 连字符 + .png,例如 sakura.png、 mid-autumn.png。这个名字(去掉后缀)叫 key,会同时用在两处:站点的图片地址 /api/frames/<key> 与站长登记的表里 —— 所以不能是中文、不能有大写、不能有空格。
  • 一稿一个文件,平铺在一个目录里,不要子目录。
  • 名字别以下划线或点开头:那两种前缀是留给临时 / 预览文件的,站点会直接跳过。
  • 只认 .png。.jpg / .gif / .webp / .svg 交过来也不会被收。
  • 交给站长的东西:
    • PNG 文件(按上面的规则命名);
    • 源文件(PSD / AI / 画笔文件)自己留着,别塞进素材目录 —— 那里只放 PNG,塞进去的其它文件会跟着站点一起发布;
    • 一句话说明(会显示在设置面板的卡片上,比如「2026 中秋限定」);
    • 想署的名(可以写进那句话里)。
  • 授权:素材会随站点的代码一起发布(这是站点的素材目录,不是用户上传区)。 请确认是你自己的原创;用到的笔刷 / 贴图 / 字体也确认授权允许这样使用。
  • 改稿:把同名文件再发一次就行,覆盖即生效,不用改任何配置。注意浏览器会缓存 旧图最长一天 —— 你自己和身边人可能要多刷几次(或强制刷新)才看到新的, 其他用户最多一天内都会换过来。
  • 交到站长手上之后:站长登记 key、把图放进素材目录,框才会出现在站上 —— 只把文件拷进去、没登记名字的,站点不认(防止误拷的文件被当成框)。 登记与发放见 docs/guide/头像框使用指南.md。

七、交付前自查(逐条过一遍)

  • 画布是正方形、边长 ≥256(推荐 256×256)?
  • 是 PNG 带透明通道?导出时没压平、没垫底色?
  • 中央是透的?叠在一张照片上看一眼,脸上没有你的图案或灰雾?
  • 外缘顶满画布四边、四角是 8% 圆角?叠在头像上看,角上既没露底、也没被切?
  • 环宽 ≤ 边长的 8%?四个角没有变胖?
  • 画布外面没有东西?(外面的一律不显示)
  • 缩到 20px 看了一眼?颜色还认得出吗?
  • 浅色(#F8FAFC / 白)和深色(#131517)两种底色下都看得清?
  • 文件名是小写字母 / 数字 / 连字符,后缀 .png?
  • 附了那句话说明、以及想署的名?

附录:两个现成的验收方法

① 叠在头像上看(这就是站点真实的做法,最准):

<div style="position:relative;width:120px;height:120px;border-radius:8%;overflow:hidden;background:#F8FAFC">
  <img src="一张头像.jpg" style="width:100%;height:100%;object-fit:cover">
  <img src="你的框.png" style="position:absolute;inset:0;width:100%;height:100%">
</div>

把存好的 .html 用浏览器打开,把宽度依次改成 120 / 34 / 24 / 20 看四遍; 把 background 换成 #131517 就是深色主题。

② 缩到 20px 再放大看:不是看它好不好看,是看「还剩什么」。


八、做错了长什么样(对照表)

你画的 屏幕上会怎样 原因
忘了挖空中间 所有人的头像上盖着一块图案 透明的地方才是「脸」
外缘圆角比 8% 更圆 四个角露出一小块头像 头像自己的圆角就是那个形状
四周留了边距 小尺寸下整圈往里缩,像没对齐 画布就是框
环比 8% 更厚 四个角变胖 / 变尖 内缘的圆角被挤没了
画成圆形 四个角被裁掉 可见区域是圆角方形
极细的线、很小的细节 20px 下糊成一团或消失 最小档只有十几个像素
纯白 / 纯黑 某一个主题下看不见 两种底色都要过
外发光 / 投影画在画布外 被齐齐切掉 画布外的像素不显示
非正方形 留白、缩一圈 站点按「完整装进方框」缩放
文件名带大写 / 中文 / 空格 站点认不出,框不出现 key 要进站长的代码白名单

九、灵感方向

四季 / 节日、材质(金属、玻璃、纸感)、几何线条、食物、小动物、纯色渐变…… 都可以。只有一条经验值得记:同一屏上会同时出现好几款框(讨论区里每个人的 头像都带着框),所以「和别的框摆在一起能一眼区分」比「单独看很精致」更重要 —— 而区分度主要来自颜色(见第四节)。

本页内容来自仓库 docs/guide/头像框出图规范.md·在 GitHub 上查看