4e6e42fff9f0fffffffavicon.ico 是一个文件里塞好几档不同尺寸的图,用的人自己挑一档。16 和 32 建议一定留着。4e6e42ffffff| 文件 | 尺寸 | 用在哪里 | 要不要放 |
|---|
网站图标不是一张图的事:标签页要 16 像素,手机主屏要 180 像素,做成可安装的应用还得分开给 192 和 512。
这页把同一枚图一次性出成全套档位,顺便把 link 标签和 site.webmanifest 写好,
你只需要把文件传到站点根目录、把代码贴进页面头部。
图标最后的命运是被缩小:母图先画在 512 像素的方框上,再按面积平均逐档缩到 16、32、48…… 缩小直接取样会漏掉像素,细线条和笔画多的字会断、会糊;面积平均把每个目标像素盖住的源像素按覆盖长度加权求平均, 缩到多小都还是那一团颜色。页面上「原样」和「放大 6 倍」两栏就是同一张图,格线即像素边界。
它是一个文件里塞好几档尺寸:先是 6 字节的方向头,再是每档 16 字节的目录项,后面才是图像本身。
宽和高各占 1 个字节,所以容器最大到 256×256——256 这个数在这两个字节里写成 0;512 那一档只能作为单独的 PNG 给出。
本页每一档都按 32 位不压缩位图存,外加一层 1 位透明掩码。
容器其实也允许直接放 PNG,但 MDN 明确建议 .ico 里用位图写法,说对 PNG 条目的支持是 Windows Vista 之后才加上的,
未必各处都认,所以本页不这么写。
生成的那段 link 建议放在页面头部的其它 link 旁边。规范写的是:
同一页可以给多档图标,浏览器按 type、media 和 sizes 自己挑最合适的一张;
如果页面里一个 rel="icon" 都没有,浏览器才会去站点根目录试 /favicon.ico——规范在这一步用的词是「可以」,
所以别把希望全押在默认路径上,文件放上、代码贴上才稳。
favicon.ico 里本页默认放 16、32、48 这三档,多档一起放可以让不同的场合各挑各的;link 用 sizes 把这些档位都列出来。apple-touch-icon.png 用 180 像素。苹果文档给的档位是 120、152、167、180,
并且说设备找不到正好那档时会取比它大的最小一张,所以只放 180 是够的。site.webmanifest 里的图标,MDN 列的 Chromium 装机条件要求同时有 192 像素和 512 像素两档。选图片是本地读取,生成、缩放、编码、打包全在你这台机器的浏览器里完成;不上传、不写 localStorage,
关掉页面就什么都留下不了。PNG 由浏览器自带的编码器产出,.ico 和 zip 的字节由本页自己拼。