本机 PNG 转多尺寸 ICO。Qt 三层壳(PngToIco.exe → PngToIcoUI.dll → PngToIcoCore.dll),Core 零 Qt、纯 C ABI 3,WIC 解码缩放后写出内嵌 9 档尺寸的图标;文件不出本机。
本机 PNG → ICO 转换台。Qt 三层壳(
PngToIco.exe → PngToIcoUI.dll → PngToIcoCore.dll),Core 零 Qt、纯 C ABI 3。拖入一张图,得到内嵌 9 档标准尺寸的图标文件;图像不上传、不需要账号。
PngToIco 面向网站与桌面开发:把 Logo PNG 做成 favicon.ico、快捷方式、文件夹图标或安装包图标。对标 pngtoico.com 的核心转换,做成 Windows 本机工具,而不是再做一份营销落地页。
当前产品边界:
.ico 同时装着这 9 张首版不做网址贴链转换、自定义尺寸、像素编辑、从 ICO 拆回 PNG,也不做云同步与账号。仅 Windows 桌面,固定浅色。

转换台:左队列、右原图与 9 档预览;拖入后自动写出内嵌 9 档的 ICO

空态:从左侧拖入或点选 PNG,转换会自动开始
无边框窗口。侧栏三组:转换、文件、系统。底栏不抢视线,状态在转换台自己的条上。
| 区域 | 说明 |
|---|---|
| 标题栏 | 品名、版本、最小 / 最大 / 关闭 |
| 侧栏 | 转换台、输出与最近、设置 / 帮助 / 关于 |
| 转换台底栏 | 空闲 / 转换中 / 就绪、成功数、失败数、当前输出路径、文件不出本机 |
主战场。左侧队列,右侧原图 + 3×3 九宫格。选中队列项切换预览。
共同能力:
源图建议 256×256 或更大的方形 PNG,边缘更利落。
输出目录的唯一编辑处。设置页不重复改目录。

输出与最近:当前目录可更改 / 打开;点成功记录回到转换台继续处理
| 能力 | 说明 |
|---|---|
| 更改 | 选本机文件夹并记住 |
| 打开 | 在资源管理器中打开当前目录 |
| 最近表 | 文件名、输出目录、时间、成功 / 失败 |
| 点成功行 | 回到转换台并选中对应任务 |
| 点失败行 | 提示无法打开预览 |
只处理保存策略与本机限制。

设置:覆盖 / 跳过 / 自动重命名;覆盖策略与最近记录只保存在本机
.iconame (2).ico单文件上限 20 MB,单次最多 50 个。改策略后弹出提示对话框。
用通俗中文说明 ICO 是容器、9 档用途、如何当 favicon、PNG 与 ICO 的差别,以及目前不支持什么。

帮助:ICO 是什么、9 档用途表、favicon 写法、文件不出本机
把结果命名为 favicon.ico 放到网站根目录,并在 HTML 的 <head> 里写:
<link rel="icon" type="image/x-icon" href="/favicon.ico">
多数浏览器在根目录找到 favicon.ico 时也会自动使用。
产品边界与隐私说明,不列 DLL 清单给最终用户看。

关于:9 档尺寸 · 文件不出本机;图像不上传、不加任何水印
favicon.ico 放到网站根目录,加上面的 <link>name (2).ico转换台先有页面和队列,编码一度只写占位图标。现在解码、缩放、写 9 档 ICO 都走同一套 Core。
| 维度 | 占位阶段 | 现在 |
|---|---|---|
| 解码 / 缩放 | 假预览或空字节 | Windows WIC 读 PNG,高质量立方缩放 |
| 非方形 | 文案说明 | 透明画布居中,不拉伸 |
| 写出 ICO | stub 图标 | 32bpp DIB(XOR + AND),256 边长按格式存 0 |
| 保存 | 再编一份假文件 | convert 缓存,save_ico 按覆盖策略落盘 |
| 配置 | 注册表 QSettings | exe 旁 pngtoico.db 的 KV |
| Ui 职责 | 兼做「假引擎」 | 只做队列、预览和提示 |
产品叙事从「能点的壳」收到「本机转换台,编码关在零 Qt 的 Core 里」。
PngToIco.exe → PngToIcoUI.dll → PngToIcoCore.dll
(loader) (Host run) (零 Qt / C ABI 3)
└──────── → Upgrade.dll(仅壳加载)
三条硬边界:
sdtech_qt_ui_host_run)CoreClient 调 Core,不写编码器Ui ↔ Core 是 C 函数表:create / destroy / kv_* / convert / save_ico / export_zip / open_folder。ABI 版本为 3。
落盘大致是:
| 位置 | 内容 |
|---|---|
pngtoico.db |
Core 内 KV(settings.outDir / settings.overwrite / settings.recent) |
| 输出目录 | 用户保存的 .ico(默认「图片 / PngToIco」) |
Function/prebuilt |
Qt 依赖以外的本树预编译库 |
依赖只认本树 Function/prebuilt。CMake 不写工作目录外盘符,不在本树编 SDK、不跑 vcpkg。
| 项 | 说明 |
|---|---|
| 语言 | C++(Core / Ui) |
| UI | Qt 6 Widgets(sdtech::ui) |
| 构建 | CMake,MSVC 2022 x64,源码树内生成 Function/PngToIco.sln |
| Core | Windows WIC(windowscodecs + ole32);sqlite3 KV |
| 测试 | GTest(编码 / 居中 / Core 调用)+ Qt Test(页面 offscreen) |
在 Function 目录配置并编译,产出在 Function/bin/。链 DLL 前若 PngToIco.exe 仍在跑,先结束进程,否则 MSVC 会 LNK1168。
日常 Debug:
cd Function
cmake --build . --config Debug --target PngToIcoUI
改 Core 后同样要先退出再编 PngToIcoCore。
| 版本 | 说明 | 下载链接 |
|---|---|---|
| 绿色版 | 解压即用 | 待补充 |
| 源码包 | Qt 工程源码 | 待补充 |
解压密码:1150。
PngToIco 适合把一张 Logo 在本机做成可用的多尺寸 ICO:拖进去、看 9 档、保存、打开目录。编码留在零 Qt 的 Core,界面只负责队列、预览和本机文件。若有功能建议,欢迎反馈。