# PicZipMerge **Repository Path**: caisimon/PicZipMerge ## Basic Information - **Project Name**: PicZipMerge - **Description**: 把 ZIP 压缩包「藏」进一张图片里 —— 合成后的文件**既是正常图片(能预览、能发送),又是完整压缩包**(改后缀为 `.zip` 即可解压)。也能反过来:从这样的图片里把压缩包取出来。 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-21 - **Last Updated**: 2026-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PicZipMerge > 作者:闲僧 把 ZIP 压缩包「藏」进一张图片里 —— 合成后的文件**既是正常图片(能预览、能发送),又是完整压缩包**(改后缀为 `.zip` 即可解压)。也能反过来:从这样的图片里把压缩包取出来。 单文件 exe,`/MT` 静态链接,**零运行时依赖** —— 拷到任何 Win10/11 机器双击即用。 ``` 图片字节 + ZIP 字节 → PicZipMerge → merged.jpg ├─ 当图片看:正常显示 └─ 当压缩包开:19 个文件原样都在 ``` --- ## 快速开始 1. 运行 `dist\PicZipMerge.exe` 2. 把一张图片拖进窗口(作为封面) 3. 把一个 `.zip` 拖进窗口 —— 自动合成,无需点任何按钮 4. 点大按钮「**复制文件**」,到微信 / QQ 聊天窗口按 `Ctrl+V` —— 以**文件**形式发送,对方收到的就是完整复合文件 --- ## 使用说明 ### 1. 合成(图片 + 压缩包) - 拖入图片 → 自动加载预览;拖入 ZIP → 自动合成落盘 - **ZIP 槽位是替换关系**:再拖一个包就是换包,不会叠加 - 合成结果保存在输出目录(状态栏有自检结果),点「另存为…」可选保存位置 - 复合文件(已经藏过包的图片)拖进来 = 整体载入,图片和包各归各位,**不会出现两个包叠加** ### 2. 提取(从图片里取出压缩包) - 拖入复合文件 → 预览区下方亮起绿色检测条 `✓ 发现内嵌压缩包` - 点「**解压到文件夹…**」→ 弹出目录选择框(默认定位到上次解压位置)→ 确定后解压到 `所选目录\原文件名\` 并自动打开 - 只想要 `.zip` 本身?右键 → 「导出为 .zip…」 - 也可以把改后缀为 `.zip` 的复合文件直接用 WinRAR / 7-Zip / 资源管理器打开解压 ### 3. 剪贴板规则(重点) | 操作 | 结果 | |------|------| | 工具里「复制文件」→ 聊天窗口 `Ctrl+V` | 以文件发送,**压缩包完整保留**(这是默认主操作) | | 工具里「复制为纯图片」(右键)→ 粘贴 | 以图片发送,**压缩包丢失**(菜单里标注了代价) | | 聊天窗口复制图片 → 粘贴进工具 | ⚠️ 取不到压缩包:聊天软件给剪贴板的只是像素位图,原文件尾部数据在复制瞬间已丢。**先在聊天里把图片另存为文件,再拖入工具** | | 复制其他文件(`Ctrl+C`)→ 工具里 `Ctrl+V` | 按拖入逻辑处理 | ### 4. 其他 - **单实例**:重复双击 exe 不会开第二个窗口;拖文件到 exe 图标上会把文件转交给已开窗口 - **路径框下拉**:最近使用的 5 张图片,悬停条目可点 `×` 删除记录(不动文件) - **快捷键**:`Ctrl+C` 复制复合文件,`Ctrl+V` 粘贴,`Ctrl+E` 解压,`Ctrl+S` 另存为 - **便携模式**:exe 同目录放一个空的 `settings.ini`(或用 `/portable` 启动),配置就写在 exe 旁边,适合 U 盘携带 - 界面右下角状态栏实时显示操作结果;一切操作都有明确反馈,没有灰色禁用按钮 --- ## 命令行模式 ``` PicZipMerge.exe /info <文件> 检测文件类型与内嵌包信息 PicZipMerge.exe /merge <图片> <输出> 合成复合文件 PicZipMerge.exe /extract <复合文件> <输出.zip> 取出内嵌压缩包 PicZipMerge.exe /unzip <文件> [目录] 解压内嵌包到文件夹 ``` ## 构建 - 双击 `PicZipMerge.sln`(VS2022 / VS2026 均可,工具集自动选择 v143 / v145),或 - 命令行跑 `build.bat`(自动探测工具链,无 vcvars 依赖) 编译参数:`/std:c++17 /O2 /MT /EHsc /utf-8`,产物 `dist\PicZipMerge.exe`(约 320 KB)。 ## 已知边界 - **过大限制**:图片 + 压缩包合计超过 **4 GB** 无法合成(ZIP 偏移是 32 位字段,硬上限);ZIP 单独超过 **1 GB** 会提示「发送到聊天软件可能受限」(仍可合成) - 不支持 ZIP64(>4 GB 或 >65535 条目的包) - 微信图片消息会重编码,**走图片通道的复合文件包必丢** —— 必须以文件形式发送 - 从聊天窗口直接复制图片,压缩包不可恢复(见上) ## 更多文档 - `docs/01-设计文档.md` —— 架构、算法与实现细节 - `docs/02-操作手册.md` —— 面向使用者的完整手册(含 FAQ 与故障排查) - `docs/04-实现任务清单.md` —— 实现清单、踩坑记录与验收数据 --- ## 免责声明 本工具仅供**学习研究、数据备份、文件传输等合法用途**。 - 使用者应遵守所在国家/地区的法律法规,**严禁**利用本工具传播违法信息、恶意程序、侵犯他人权益的内容,或用于任何非法用途 - 隐蔽传输不等同于匿名,通信服务商与接收方仍可能感知文件的存在;切勿利用这一点从事违规行为 - 因使用本工具而产生的一切后果,由使用者自行承担,作者不对滥用行为负责 下载或使用本工具,即表示你已阅读并同意以上条款。