Windows 图标 (.ico)
Microsoft 标准Windows 图标资源(ICO)是微软的多分辨率图标容器格式,在全球广泛使用,也是网站浏览器标签中标准“favicon.ico”的格式。
将 ICO 转换为 PNG
免费的浏览器端 ICO 转 PNG 转换器。在您的设备上即时转换文件。
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 ICO 文件:
字节级文件头签名 (魔数)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 ICO 文件:
十六进制签名 (偏移量 0):
00 00 01 00ASCII 表示形式: ....
标准化: Microsoft Windows Icon Resource Specification
技术规格
| 容器架构 | 6 字节 ICONDIR 标头由 2 字节保留字段(值为 0)、2 字节类型字段(图标为 1)和 2 字节图像数量字段组成;前 4 个字节是固定签名,后接 16 字节的 ICONDIRENTRY 记录以及 DIB 或 PNG 图像数据。 |
| 压缩方式 | 未压缩的 DIB,或采用 PNG 压缩的数据流(用于 256x256 图标) |
| 字节序 | 小端序(Intel x86) |
| 色彩空间 | 设备 RGB, sRGB |
| 通道与结构 | 1 位单色、4 位 / 8 位调色板、24 位 RGB,或带 Alpha 通道的 32 位 RGBA |
| 最大尺寸 | 256 x 256 像素(支持 16x16、32x32、48x48、64x64、128x128 和 256x256 等多种分辨率) |
| 透明度 | XOR/AND 二值透明遮罩,或完整的 8 位平滑 Alpha 通道 |
| 流式传输与渐进式加载 | 图标目录容器不支持流式读取 |
技术对比矩阵:ICO 对比同类产品
| 技术属性 | ICO (当前) | PNG | SVG | CUR |
|---|---|---|---|---|
| 多分辨率存储 | 一个文件中嵌入多种尺寸 | 仅单张图像尺寸 | 无限矢量缩放 | 多种光标尺寸 |
| Favicon 支持 | 许多浏览器支持此格式,但具体行为因版本而异。 | 现代浏览器支持 | 现代浏览器支持 | 无(仅限鼠标光标) |
| 资源类型 ID | 0x0001(图标) | 标准图像文件 | W3C XML 矢量图 | 0x0002(带热点的光标) |
| 最大尺寸 | 256 x 256 像素 | 实际上不受限制 | 无限(矢量) | 256 x 256 像素 |
常见损坏模式与十六进制恢复指南
浏览器标签页显示空白的默认文档页,而非自定义网站图标。
根本原因: 网站图标缺少标准的 16x16 或 32x32 分辨率条目,或包含损坏的 DIB 标头。
恢复方法: 使用 File2File.app Favicon Generator 重新生成多分辨率 ICO 文件。
安全分析与解析器攻击向量
ICO 文件包含指定数据偏移的目录表;必须校验这些偏移,以防缓冲区溢出漏洞。
已知攻击向量
- 图像目录计数发生整数溢出,导致内存分配过小,进而造成堆缓冲区溢出。
- 损坏的图像字节偏移指针会使读取超出映射的文件内存范围。
- 256x256 图标条目中嵌入的 PNG 解压炸弹。
防御性最佳实践: 确保所有目录项偏移都严格落在 ICO 文件的物理范围内。
历史渊源与里程碑
2006Windows Vista 引入了对 ICO 格式中嵌入的 PNG 压缩 256x256 图标的支持。
1999Internet Explorer 5 引入了"favicon.ico",使 ICO 成为浏览器标签页品牌标识的通用标准。
1985Windows 1.0 发布,原生支持用于桌面快捷方式图形的 .ICO 格式。
核心优势与特点
- 在单个文件中封装多种图像分辨率(例如 16x16、32x32、48x48、256x256),以便在所有 DPI 缩放下清晰显示。
- 与所有曾经推出的网页浏览器和桌面操作系统保持通用的向后兼容性。
- 在经典容器内支持现代的 256x256 高分辨率 PNG 压缩。
技术局限与劣势
- 现代网页浏览器更喜欢标准的 SVG 和 PNG 网站图标,而不是传统的多资源 ICO 容器。
- 旧软件中的传统 1 位 XOR 透明度蒙版会产生锯齿状、像素化的边缘。
- 固定的分辨率限制(每个图标帧最大 256x256 像素)。
趣味技术冷知识
- 在早期 Windows 版本中,图标限制为 16 色的 32x32 像素。
- 当 Internet Explorer 5 引入网站图标时,网站通过统计服务器日志中对"/favicon.ico"的请求,就能知道有多少人将他们的页面加入了书签。
- ICO 文件中的 256x256 图标条目实际上包含一个以 8 字节 PNG 签名开头的完整、有效的 PNG 文件。
常见技术问题
为什么我的网站需要一个 favicon.ico?
即使 HTML 指定了 PNG 网站图标,浏览器和搜索引擎爬虫默认仍会请求“/favicon.ico”,以显示标签页和书签图标。
ICO 文件中应该包含哪些分辨率?
专业的 ICO 文件应包含 16x16、32x32、48x48 和 256x256 像素版本,以便在所有显示器缩放比例下和任务栏中都清晰锐利。
如何将 PNG 转换为 ICO 文件?
将您的 PNG 图像上传到 File2File.app,即可直接在网页浏览器中即时生成优化的多分辨率 ICO 文件。