IP as Logo 生成之后:把角色图片接入网站、favicon 和 PWA

梳理角色图片接入网站的完整环节,包括导航标识、favicon、PWA Manifest、遮罩图标、分享封面、缓存与更新回退。

土耳其 VDS,完整 root 权限|BRNCHOST · 自管服务器
建站开服,云上轻松起步|雨云 RCS · 宝塔 / 1Panel 预装
低价年付,搭起你的应用|RackNerd · KVM VPS · SSD 存储
香港轻量,按配置选型|晚安云 · 云服务器
NVMe 机型,关注磁盘 I/O|野草云 · 香港 VPS
大陆优化,连接海外应用|搬瓦工 · CN2 GIA / CTGNet 套餐
读文件、写文档、跑任务|WorkBuddy · AI 工作台
CVM 云主机,配置按需选|腾讯云 · 云服务器
中国方向优化,认准系列|DMIT · Premium / CN2 GIA
双 ISP 住宅 VPS|丽萨主机 · 原生 IP · 多地区产品
每周自动异地备份|Evoxt · 高频 CPU · 云服务器

一个网站的图标问题,常常不是没有图片,而是图片没有放对地方。首页左上角已经换了新角色,文章页仍然显示模板图标;浏览器标签里是旧文件,手机桌面上的入口又被裁掉半张脸。开发者看到的 logo.png 只有一个名字,用户看到的却是几个不同入口。

IP as Logo可以为角色设计提供 Skill,也提供现成素材库。但拿到一张方形图片之后,网站接入仍然是一项独立工作:整理源文件、导出尺寸、声明用途、处理裁切,再检查真实页面。

图片生成和网站配置要分开

这个项目的仓库主要是说明文档与示例素材,不是运行在服务器上的图片服务。使用 Skill 需要兼容智能体和可调用的图像生成能力。它不会自动修改网站的 HTML,也不会替你生成适合所有设备的图标套装。

这意味着,不论图片来自图库还是生成,都应该先建立一份正式源文件。源文件不直接被所有页面使用,而是作为后续尺寸、留白和格式处理的起点。

源文件选定后,先确认它是什么:位图还是矢量、是否自带背景、像素尺寸多大、边缘是否已经裁切。不要只看扩展名,更不要把 PNG 改名为 SVG 后认为已经矢量化。需要矢量输出,应另外整理实际路径与形状。

对于角色式图形,检查角落构图尤其重要。人物从下角冒出来,大图里很鲜明,但如果脸已经贴住边缘,手机平台再施加遮罩时,就没有调整空间。

IP as Logo 项目展示图

项目展示图提供的是角色方向。网页图标的格式、声明和安全区域,还需要在接入时单独处理。

先列出入口,再决定导出文件

常见的入口至少有四个:导航栏中的可见标识、浏览器标签、手机桌面入口、社交分享卡片。它们的显示形状和信息量不同。

导航栏通常将图形与站名并排,图形需要让文字留有空间。标签图标非常小,主要依赖轮廓和颜色。手机入口可能被平台裁切,需要留出安全区域。社交卡片往往是横向画面,还需要标题与主题信息。

不要用一张横向封面去做 favicon,也不要把 32 像素的小图放大作为分享封面。前者会被缩成难以辨认的细条,后者会明显模糊。尽管它们表达同一个站点,也应该从源图分别制作。

一份静态站的目录示例:

public/
  brand/
    site-mark.png
    favicon-32.png
    favicon-64.png
    apple-touch-icon.png
    app-icon-192.png
    app-icon-512.png
    app-icon-maskable-512.png
    share-card.png
  site.webmanifest

这里的文件名与尺寸是一种组织方式,不是所有网站都必须完整使用。没有 PWA 的站点,不必为了凑齐列表添加无用的安装入口。已有框架自动处理图标时,也应优先遵循框架当前文档。

普通网页的图标声明

对于由自己控制 <head> 的网页,可以通过 link 指定图标。例如:

<link rel="icon" type="image/png" sizes="32x32"
      href="/brand/favicon-32.png">
<link rel="icon" type="image/png" sizes="64x64"
      href="/brand/favicon-64.png">
<link rel="apple-touch-icon" href="/brand/apple-touch-icon.png">

这些路径是示例,使用前必须对应到实际部署的文件。sizes 描述图片尺寸,type 描述媒体类型,浏览器会参考这些信息选择资源,而不是因为文件名包含 favicon 就自动理解所有用途。

MDN 的 rel 文档说明了图标选择机制,也指出 iOS 的 Web Clip 使用不同入口。添加桌面图标与浏览器标签图标要分别考虑。

如果主题模板已经输出 rel="icon",先查看生成后的 HTML。重复声明不同文件,可能让实际选择与预期不一致。修改模板源文件以后,也要确认构建产物包含新声明,而不是只在开发环境看到了新图。

导航栏中的图形是另外一个普通图片元素,例如:

<a href="/" aria-label="返回首页">
  <img src="/brand/site-mark.png" width="32" height="32" alt="">
</a>

这是只有图形作为首页入口时的一种写法。若链接内部同时有可见站名,可让文字承担名称,避免重复的替代文本。具体应按实际结构处理,而不是把示例里的标签机械复制到所有位置。

PWA 图标写在哪里

提供 PWA 的网站,通常通过 Web App Manifest 声明应用信息与图标:

{
  "name": "Example Notes",
  "short_name": "Notes",
  "start_url": "/",
  "display": "standalone",
  "icons": [
    {
      "src": "/brand/app-icon-192.png",
      "sizes": "192x192",
      "type": "image/png",
      "purpose": "any"
    },
    {
      "src": "/brand/app-icon-512.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "any"
    },
    {
      "src": "/brand/app-icon-maskable-512.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "maskable"
    }
  ]
}

页面再引用它:

<link rel="manifest" href="/site.webmanifest">

这段代码是配置结构示例,并不意味着添加它后就满足所有 PWA 安装条件。图标只是 Manifest 的一部分;应用行为与安装支持仍取决于浏览器和其他配置。

MDN 的 Manifest icons 文档解释了 src、sizes、type 与 purpose。这里把普通图标与遮罩图标分成两个文件,是为了让不同用途的留白可控。

没有专门整理遮罩图标时,不要简单把普通文件的 purpose 改成 any maskable。声明并不会改变图片里的角色位置。你说它可以被裁切,不等于它的关键部分真的在安全区域内。

角落构图怎样适配遮罩

IP as Logo 示例常见主体从下方角落进入画面的形式。它在方形卡片里有个性,但在手机入口里可能出现两个问题:顶部特征被裁掉,或者脸部重心偏得过远。

制作遮罩版本时,背景可以铺满画布,角色关键部分则向中心收一些。保留完整识别特征比维持原来的边缘接触更重要。导航栏版本与手机入口版本不必拥有完全相同的像素位置。

web.dev 对 maskable icon 的介绍给出了跨形状裁切的安全区域概念。你可以按圆形、圆角方形等遮罩预览自己的图,确认脸、耳朵或主要特征没有损失。

普通头像也会裁成圆形,检查方式类似。不过圆形社交头像与 PWA 遮罩并非同一套技术要求,不要只看某个平台头像正常,就认定手机入口一定没问题。

选图阶段就保留一些留白,后面的整理会更容易。如果原图关键部位已经被切掉,缩小主体只能把缺口一起缩小,无法恢复不存在的内容。

项目展示图中的局部角色

观察角色靠近边缘的位置。实际导出图标时,应根据入口的裁切方式重新安排留白。

把显示尺寸和文件尺寸分清

网页上显示为 32 像素,不一定应该只准备一张 32 像素的导航图片。高密度屏幕可能需要更高像素的资源,但文件也不应大到每次都下载几千像素的原图。

普通内容图片可以通过 srcset 等方式提供不同资源;一个很小的站点标识则更适合直接选用合理尺寸的文件,保持接入简单。根据实际使用位置做导出,不要为每个可能的尺寸复制几十份没人维护的文件。

HTML 中写明宽高,可以让页面提前预留空间。CSS 改变显示尺寸时,应保持宽高比例,不要让角色被拉扁。背景圆角也要确认由谁负责:素材本身、页面 CSS 或设备遮罩,尽量不要层层叠加。

位图导出需要查看边缘是否变糊。减少尺寸以后,细线和小眼睛可能消失,这属于设计与缩放共同作用的问题。单纯提高压缩质量,无法让原本过细的轮廓重新清楚。

文件能打开,不代表页面引用正确

部署以后,先直接访问图标路径。确认返回的是图片,而不是主题的错误页、登录页或重定向后的 HTML。某些静态服务会把不存在的路径回退到首页,看起来是 HTTP 200,却不是正确资源。

接着查看页面最终输出的图标声明。路径要对应当前域名与部署位置;如果站点部署在子路径下,根路径写法可能指向错误位置。主题设置页保存了路径,也不等于所有页面都已经引用它。

图标不应放在需要登录的管理目录,也不应依赖几分钟后过期的签名链接。用户和搜索爬虫需要能够长期访问。正式文件使用稳定地址,素材管理则保留自己的源文件和版本记录。

搜索结果里的图标有自己的规则

Google 的 favicon 文档要求首页与图标文件可以被抓取,图标为方形,建议使用大于 48 像素的资源,并保持地址稳定。符合要求不保证一定展示,也不保证更换后立即更新。

这里尤其容易照搬旧教程。有些文章把尺寸写成必须是 48 的倍数,读者又把那句话当成永久规则。配置前应看当前官方文档,不要为了旧说法反复改文件。

还要区分域名、子域名和子目录。搜索展示按主机名处理站点图标,不能因为在某个子目录配置了不同图片,就期待它一定有独立的搜索图标。

做好站内配置后,搜索变化需要另行观察。不要把缓存中的旧图当作图片生成失败,也不要为了催促更新每天更换地址。

分享封面与站点图标不要相互代替

分享卡片通常需要横向画面,图标通常需要方形。用同一角色可以保持归属,但页面声明应该指向各自的导出文件。给文章配置分享图时,还应确认主题文字没有被平台缩略图裁掉。

对于内容站,站点默认分享图与单篇文章封面也要区分。文章已有合适的封面,就让它表达文章主题;没有封面时,默认站点图可以提供稳定的视觉。不要让每一篇文章都显示同一张巨大 Logo,而标题又难以看清。

发布以后可以查看页面最终输出的社交元信息,确认图片 URL 为完整且可访问的公开地址。页面里看得到封面,不代表分享抓取端一定能访问同一个资源。图片鉴权、临时链接和错误 MIME 类型都可能使两者产生差别。

为下一次维护留下说明

一份简短维护文件可以记录入口、路径、尺寸、正式源图和部署方式。框架升级或主题更换时,先按它恢复应该存在的图标声明,再检查是否与新版自动生成的声明重复。

如果图片来自 CDN,也要记录本站页面如何引用它。域名、存储桶和公开路径调整时,图标可能不像正文图片那样容易被注意到,却会在浏览器标签和搜索里持续显示错误。

删除旧素材之前,检查页面、Manifest 和后台设置是否还有引用。不要仅凭文件名看起来旧就清理。归档原图与运行时清理是两件事,前者保留维护能力,后者则要确保没有在用的路径被移除。

更新与回退都要留一条路

替换前保留旧文件与当前声明,新版本放在明确位置。改完先看首页、文章页与移动入口,再确认不存在新旧混用。浏览器缓存可能暂时显示旧图,所以需要同时核对页面声明和实际请求。

站内资源可以通过版本命名管理,但搜索 favicon 又强调地址稳定。规划时可以给搜索图标保留固定路径,内部归档另存版本;页面其他素材的缓存策略则按自己的部署方式处理。不要一条规则套住所有图片。

如果新图确实存在裁切或可读性问题,恢复旧声明比临时重画更快。等新版本整理好再替换,用户不会看到半套图标。

这类工作适合写一张短清单:文件可访问、类型正确、页面声明一致、小尺寸可读、手机裁切安全、旧版本可回退。把这些环节完成后,角色图片才算真正进入网站,而不只是出现在素材文件夹里。