在线图片转 ICO 转换器
把 PNG/JPG/WebP 转成多尺寸多图层 Windows ICO 图标。
隐私安全:所有处理均在您的浏览器本地完成,数据绝不上传图片转ICO图标制作图片
1. 上传图片
PNG / JPG / WebP / GIF / BMP / SVG,可多选尚未添加图片
2. 转换设置
图层尺寸(多选)
256 尺寸会自动强制使用 PNG 图层,避免资源管理器不识别。
非正方形缩放策略
透明通道与背景
填充底色
取消「保留透明」后,原本透明的区域将使用上方底色填涂。
图层格式
3. 预览
各尺寸按原始像素 1:1 展示,棋盘格代表透明区域,便于判断小尺寸下的可辨识度。
任务栏 / 桌面模拟
4. 生成与下载
🔒 全部在浏览器本地完成,图片不会上传到任何服务器。
工作原理
- 1图片只用本地 File 对象读取(createObjectURL / createImageBitmap),不会发起任何网络请求,也不会把像素交给服务器。
- 2对每个目标尺寸,先在离屏 canvas 上做阶梯降采样(每次最多缩小 50%),再按所选策略绘制到 size×size 画布,小尺寸图标更锐利、锯齿更少。
- 3每个尺寸的图层数据由 canvas.toBlob 生成 PNG 字节,或取 getImageData 的 RGBA 像素编码为 32 位 BMP 位图(BITMAPINFOHEADER + 自下而上的 BGRA + AND 掩码)。
- 4最后按 ICO 规范手工拼装二进制:ICONDIR(保留位 0、类型 1、图层数 N)+ N 个 16 字节 ICONDIRENTRY + 各图层数据,全部字段小端,256 尺寸的宽高字节写 0。
- 5批量导出使用内置的 store 模式 ZIP 实现(CRC-32 + UTF-8 文件名标志),无需任何第三方库即可打包下载。
常见问题
生成的 ICO 在 Windows 里能正常显示吗?
可以。文件按标准 ICO 结构拼装:ICONDIRENTRY 中类型为 1、位深为 32、尺寸字段正确(256 记作 0),图层优先使用 Vista 及以上支持的内嵌 PNG 数据,Windows 资源管理器与任务栏均可正确读取并显示透明背景。
为什么 256×256 图层不能选 BMP 格式?
BMP 位图对 256 这种大尺寸的 ICO 图层支持不佳,Windows 资源管理器可能不识别。因此勾选 256 尺寸时工具会自动改用 PNG 图层,无需你手动切换。
非正方形图片会变形吗?
默认的「包含」策略会等比缩放并居中留白,不会变形;「覆盖」会等比放大后居中裁切;只有显式选择「拉伸」时才会改变宽高比并变形,工具会在界面中提示。
源图比目标尺寸小,会被放大吗?
默认允许放大,但放大不会带来真实清晰度。取消勾选「允许放大」后,小于源图边长的目标尺寸会被跳过,并在预览区标注,避免产生虚假清晰的图标。
渐变透明的图片会丢失 alpha 吗?
不会。保留透明通道时半透明像素的原样写入图层的 alpha 通道;只有你主动取消「保留透明」并指定底色时,才会用底色填充透明区域。
图片会上传到服务器吗?
不会。解码、缩放、编码与打包全部在浏览器本地完成,页面不发起任何网络请求,断网状态下也能正常使用。