ICO格式详解 — Windows图标与网站favicon
整理了在一个文件中容纳多种尺寸图像的 ICO 格式的结构与文件头、Windows 推荐尺寸(16·32·48·256px)与 PNG 压缩图标、favicon 仍在使用 ICO 的原因,以及 PNG 转 ICO 的注意事项。
ICO 是 Windows 中用于保存程序、文件和快捷方式图标的格式。在 IANA 注册的正式媒体类型是 image/vnd.microsoft.icon,但实际上 image/x-icon 用得更广泛(MDN)。它与一般图片格式最大的不同在于 一个文件中同时包含多种尺寸的图像。Windows 会根据任务栏、资源管理器列表、大图标视图等不同场景,挑选最合适的尺寸来显示。
结构
ICO 文件以简短的文件头和“图像列表(目录)”开头。列表中的每一项记录了宽高、颜色数和数据位置,其后是实际的图像。每张图像以下列两种方式之一保存:
- BMP(DIB)格式:传统方式。在颜色数据之外保存 1 位 AND 掩码(是否透明),32 位图像则通过 Alpha 通道表现柔和的透明度。存入时不含文件头(
BM)。 - PNG 格式:从 Windows Vista 开始支持。可以用较小的体积容纳大图标。
查看文件头
ICO 文件的前 6 个字节依次为保留值(0)、类型(1 = 图标,2 = 光标)和所含图像数量。之后每张图像对应一个 16 字节的条目,记录宽高、颜色数、数据大小和位置。宽高字段只有 1 字节,最多只能写到 255,因此有一条 256 像素记为 0 的规则。使用相同结构的光标文件(.cur)则在条目中用点击位置(热点)坐标取代颜色平面和位数字段。
Windows 推荐尺寸
Microsoft 的图标设计指南建议应用程序图标同时包含 16×16、32×32、48×48、256×256 各尺寸。256×256 图标是在 Vista 中新增的,这种大尺寸通常以 PNG 压缩保存。小尺寸与其简单缩小大图,不如单独修整——加粗线条、减少细节——会更清晰。
Windows 会根据屏幕缩放(DPI 设置)和资源管理器的视图方式,从文件中挑选最接近的尺寸来显示,缺少的尺寸则通过放大或缩小生成。因此,把常用尺寸都放进去,在任何屏幕上都不会显得模糊。像浏览器标签页上的 favicon 这样以 16×16 显示的地方也很多,所以最小的尺寸尤其重要。
favicon 与 ICO
网站图标(favicon)长期以来都以网站根目录下的 /favicon.ico 提供,所有主流浏览器都支持。如今更推荐用 <link rel="icon"> 指定 PNG·SVG 图标(MDN),但也有程序不看链接标签、直接请求 /favicon.ico,因此许多网站会同时放一个 ICO。
Google 搜索中心要求搜索结果中显示的网站图标必须是 正方形(1:1)且至少 8×8 像素,并建议使用 大于 48×48 像素的尺寸,以便在各种屏幕上都清晰可见。其明确列出的支持格式包括 ICO、PNG、GIF、JPEG、BMP 等。
转换时的注意事项
- 请使用 正方形原图。长方形图片会被拉伸或留出空白。必要时先用 裁剪 裁成 1:1。
- 使用 透明背景的 PNG 作为原图,图标边角会更自然。JPG 原图会原样留下白色方形背景。
- 在 16×16 这样非常小的尺寸下文字无法辨认,最好只保留 Logo 的核心图形。
- 将 PNG 转为 ICO 可以把多种尺寸放进一个文件。
- Windows 资源管理器会缓存图标,如果换了图标却仍显示旧样子,请等待缓存更新,或改一下文件名再确认。