先看结论
- ICO 是一种保存多个不同尺寸和色深位图、供系统或应用按显示环境选择合适版本的 Windows 图标容器格式。
- 在 Windows 上,可用采用 Windows Imaging Component 原生 ICO 解码器的图像程序打开。WIC 没有原生 ICO 编码器,因此能读取或显示 ICO 的程序不一定能创建或写回 ICO。在 Mac 或手机上,应选择明确标注支持 ICO 解码的图像程序;若不能读取,可转换可信副本,但需要逐一处理其中的图像版本。
- 不能仅凭 .ico 扩展名或正确文件头认定文件安全。NVD 记录的 CVE-2004-1049 表明,特制图像尺寸字段曾可触发 Windows LoadImage 的整数溢出和缓冲区溢出。处理不受信任的 ICO 时,应限制文件大小与图像尺寸、校验目录偏移,并使用已更新且隔离的解码器。
ICO 图像文件:打开、检查与转换方法
Microsoft 将 ICO 正式称为 Icon Format。一个 ICO 可以包含同一图标的多个位图版本,常见尺寸包括 16×16、32×32、48×48 和 256×256。图像由位图与生成透明区域的掩码组成,32 位图标还可以使用 alpha 透明度。其识别字节是在偏移 0 处的 00 00 01 00。
把多图像 ICO 转成 PNG 时,只导出一张图会丢失其他尺寸和色深版本。把 PNG 转成 ICO 时,如果发生缩放或降至 8 位、4 位调色板,可能产生锯齿,并损失透明度或颜色细节。需要分别保留目标尺寸,并在需要时保留 alpha 透明度。
怎么打开
在 Windows 上,可用采用 Windows Imaging Component 原生 ICO 解码器的图像程序打开。WIC 没有原生 ICO 编码器,因此能读取或显示 ICO 的程序不一定能创建或写回 ICO。在 Mac 或手机上,应选择明确标注支持 ICO 解码的图像程序;若不能读取,可转换可信副本,但需要逐一处理其中的图像版本。
在 Windows 上,可用采用 Windows Imaging Component 原生 ICO 解码器的图像程序打开。WIC 没有原生 ICO 编码器,因此能读取或显示 ICO 的程序不一定能创建或写回 ICO。在 Mac 或手机上,应选择明确标注支持 ICO 解码的图像程序;若不能读取,可转换可信副本,但需要逐一处理其中的图像版本。
把多图像 ICO 转成 PNG 时,只导出一张图会丢失其他尺寸和色深版本。把 PNG 转成 ICO 时,如果发生缩放或降至 8 位、4 位调色板,可能产生锯齿,并损失透明度或颜色细节。需要分别保留目标尺寸,并在需要时保留 alpha 透明度。
文件安全
不能仅凭 .ico 扩展名或正确文件头认定文件安全。NVD 记录的 CVE-2004-1049 表明,特制图像尺寸字段曾可触发 Windows LoadImage 的整数溢出和缓冲区溢出。处理不受信任的 ICO 时,应限制文件大小与图像尺寸、校验目录偏移,并使用已更新且隔离的解码器。
来路不明、文件名带两个后缀,或者内容和扩展名对不上——先停下来核对。
转换格式
把多图像 ICO 转成 PNG 时,只导出一张图会丢失其他尺寸和色深版本。把 PNG 转成 ICO 时,如果发生缩放或降至 8 位、4 位调色板,可能产生锯齿,并损失透明度或颜色细节。需要分别保留目标尺寸,并在需要时保留 alpha 透明度。
先复制一份原文件再转换,转完对照看看画质、元数据和排版有没有变。
常见问题
ICO 文件格式是什么,用来做什么?
ICO 是 Windows 图标容器,可在一个文件中保存不同尺寸和色深的一个或多个位图,让系统或应用选择适合当前显示环境的图像版本。
ICO 文件怎么打开?
使用带有 ICO 解码器的图像程序打开。Windows Imaging Component 原生支持 ICO 解码,但没有原生 ICO 编码器,所以能显示文件并不表示该程序也能创建或保存 ICO。
Windows 11 怎么打开 ICO 文件?
选择使用 Windows Imaging Component 原生 ICO 解码器的程序打开 .ico 文件。Windows 还提供接口,可从独立 ICO 文件以及 EXE、DLL 文件中提取图标。
Mac 怎么打开 ICO 文件?
选择明确标注支持 ICO 解码的 Mac 图像程序,并检查它能否访问文件中的所有尺寸。如果不支持,可用合适的转换工具处理可信副本。
手机怎么查看 ICO 文件?
使用明确标注支持 ICO 解码的手机图像程序。如果无法读取,可从可信副本中选取所需图像并转成 PNG;一张 PNG 无法保留 ICO 中的其他尺寸版本。
ICO 文件打不开或显示不正确怎么办?
程序可能没有 ICO 解码器,目录偏移或图像数据可能无效,也可能选错了内含尺寸。可检查偏移 0 处是否为 00 00 01 00,并改用已更新的解码器;不要反复解析来源不明的异常文件。
Windows 图标应该用 ICO 还是 PNG?
需要在单个 Windows 图标文件中保存多个尺寸和色深时,应使用 ICO。PNG 是普通的单图像文件;从 ICO 只导出一张 PNG 会丢弃其他内含版本。
ICO 转 PNG 怎么避免丢失多尺寸图标?
逐一提取需要的内含图像,并将每个尺寸分别保存为 PNG。单个 PNG 不能保留多图像 ICO 中的全部尺寸和色深版本。
邮件里的 ICO 附件是否安全?
不能仅凭扩展名或文件头信任它。特制 ICO 数据曾利用 Windows 图像解析器漏洞;对于意外附件,应使用已更新且隔离的解码器,并限制和校验文件大小、图像尺寸及目录偏移。
ICO 支持哪些图标尺寸和透明度?
ICO 可包含不同尺寸和色深的多个位图。Windows 应用图标常见 16×16、32×32、48×48 和 256×256 版本;掩码可生成透明区域,32 位图像还可使用 alpha 透明度。
相关格式
资料来源
ICO Format Overview · Microsoft Learn(格式开发者的官方 Windows 文档)
Icons (Menus and Other Resources) · Microsoft Learn(官方 Win32 资源文档)
Icons (Design basics) · Microsoft Learn(官方 Windows 图标设计与兼容性指南)
IANA Media Types Registry · IANA(官方媒体类型注册表)
PRONOM Icon File Format Signatures · 英国国家档案馆 PRONOM(权威格式识别注册库)
NVD CVE-2004-1049 · 美国国家标准与技术研究院国家漏洞数据库