跳到主内容
UniKit

ICO 转 PNG

ICO 图标提取所有尺寸在线转 PNG:自研解析 ICONDIR 与 BMP/PNG 两种载荷,逐个尺寸导出 PNG 并保留透明通道。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

选择图标

解析与转换都在浏览器里完成,图标不会上传。

支持 .ico 与 .cur;BMP(DIB) 与内嵌 PNG 两种载荷都能处理。

转换结果

还没有读取到图标目录。

这个工具能做什么

  • 设计师给的 .ico 里通常塞了 16/32/48/256 好几个尺寸,先导出成 PNG 才能在 Figma 或 PPT 里直接用。
  • 做网站 favicon 时把 256×256 那一档转成 PNG,当作 og:image 或 PWA 图标。
  • 检查图标是否真的带透明通道:导出的 PNG 在透明背景上打开一眼就能看出来,不用装专用工具。
  • 把老的 .cur 光标文件转成 PNG 预览,确认每一档的像素内容再决定用哪个。

示例

输入

一个 2 × 2 的 32 位 ICO:目录项声明 2 × 2,载荷是 BITMAPINFOHEADER + BGRA 位图 + AND 掩码

输出

导出 icon-2x2.png(8 位真彩 + Alpha),其中一个像素的 alpha 来自 AND 掩码、另一个来自 BGRA 的 128

如果图标里某一档本来就是内嵌 PNG(Vista 之后的 256×256 常见),工具会原样导出,不做二次编码。

常见问题

为什么导出的 PNG 比原来的 ICO 还大?

这是正常的:ICO 里的位图是无压缩存储的 DIB,PNG 要用 zlib 重新压缩一遍;小尺寸图标(16×16、32×32)本身只有几百字节,PNG 的头部开销就占了一大半,所以文件反而更大。图标尺寸越大,PNG 的压缩优势越明显。

透明通道是怎么处理的?

按 Windows 图标的规则来:32 位图标直接读 BGRA 里的 alpha;1/4/8/24 位图标没有 alpha,就靠 AND 掩码——掩码里置位的像素会被写成全透明。如果 32 位图标的 alpha 全是 0(老工具导出的常见毛病),工具会当作没有 alpha 处理,避免整张图变透明。

支持哪些位深?

1、4、8 位调色板,以及 24、32 位真彩,覆盖了实际见到的绝大多数图标。16 位(RGB555/RGB565)和 RLE 压缩的 DIB 暂不支持,遇到会明确提示而不是输出一张错误的图。

CUR 光标文件也能转吗?

能。CUR 和 ICO 是同一个容器结构,只有容器类型字段不同(1 = 图标,2 = 光标),目录里多出来的热点坐标会被忽略;导出的仍是各个尺寸的 PNG。

图标会上传吗?

不会。整个解析和 PNG 编码都在浏览器里完成:DIB 解码是自研的纯 JS 实现,PNG 编码用 zlib 压缩后自己写 chunk 和 CRC,没有任何网络请求,关掉页面数据就没了。

关键词:ico 转 png图标提取favicon 转 pngico to pngicon extractoricondirbmp 图标解码多尺寸图标cur 文件图标转换

同类工具