JPG 原地 EXIF 擦除与备份恢复
为什么独立出来做
元数据安全不是格式转换的一部分——它是独立的隐私工具套件,不生成新文件、不走任何转换引擎。ZenConverter 把它单独放在主界面的"隐私工具"区域,而不是埋在某个格式转换选项里。
设计决策很简单:元数据清理应该是一个"一按就好"的独立操作,不是格式转换的附加选项。
JPG 元数据擦除原理
不重编码,原地操作
JPG 文件是由一串段(segment)组成的:SOI → APP0 → APP1(EXIF/XMP)→ APP2(IPTC)→ DQT → SOF0 → DHT → SOS → EOI。EXIF 元数据存储在 APP1 段里。
ZenConverter 做的事是直接从文件里删掉 APP1 段的二进制内容,而不是解码 → 修改像素 → 重新编码。这样:
- 画质零损失:像素数据完全不动;
- 速度极快:一次文件操作,不需要解码/编码;
- 文件体积变小一点:去掉了几 KB 到几百 KB 的元数据段。
保留什么,移除什么
| 元数据段 | 处理 | 说明 |
|---|---|---|
| APP1 (EXIF/XMP) | ✅ 移除 | GPS 坐标、拍摄时间、相机型号/参数、定位数据——隐私敏感 |
| IPTC/Photoshop | ✅ 移除 | 版权、作者、评论等(非隐私但一并清理) |
| APP0 (JFIF) | ❌ 保留 | JPEG 格式必需的识别段 |
| APP2 (ICC) | ❌ 保留 | 色彩配置表,移除可能导致颜色异常 |
| Adobe | ❌ 保留 | Adobe 显示标记 |
清理后的 JPG 仍然是标准 JPG 文件,任何浏览器/查看器都能正确显示。
备份与恢复
移除的元数据不会直接丢掉——会备份到应用私有目录(data/org.zenconverter.app/files/privacy/)。
恢复条件
恢复不是"按文件名找回",而是双重匹配:
- 当前选中的 JPG 的像素 SHA-256 哈希值 = 备份时的像素 SHA-256;
- 当前选中的 JPG 的宽高尺寸 = 备份时的宽高尺寸。
两个条件都满足 → 认为是同一张图,可以恢复元数据。
为什么用像素哈希
因为 JPG 清理前后像素完全不变(原地删 segment),所以 SHA-256 不变。这比"按文件名匹配"可靠得多——文件可能被重命名过、复制过、移动过,像素哈希始终唯一标识这张图。
恢复的边界
- 只能恢复同一张图:如果图被压缩过、裁剪过、重编码过,像素变了,SHA-256 对不上,恢复失败;
- 备份不会无限增长:应用私有目录在应用卸载时会被清空,备份也随之消失;
- 不支持 HEIC 恢复:HEIC 的元数据原地清理本身就不支持(见 HEIC 页面),也就没有备份恢复的说法。
使用场景
| 场景 | 推荐 |
|---|---|
| 手机拍的私人照片想分享到社交平台 | 先擦除 EXIF(去掉 GPS 和拍摄时间) |
| 工作文档里嵌入的 JPG 要发给客户 | 擦除 IPTC 里的版权信息 |
| 擦除后想找回 EXIF 信息(比如回忆拍摄时间) | 用备份恢复(前提是图没被改过) |
为什么不在图片互转里顺便做
ZenConverter 的图片互转路线不自动擦除元数据。两个原因:
- 图片互转的核心功能是"改格式/放大/压缩",擦元数据是独立操作;
- 如果你想擦元数据又想转格式,先选"隐私工具 → 擦除 EXIF"再选格式转换,两步独立、互不耦合。
你也可以反过来:先转格式再擦元数据——图片互转不自动拷贝元数据,所以转格式后的输出文件本身就没有源元数据。
相关页面
- HEIC/HEIF 元数据查看 —— HEIC 的元数据路线和 JPG 完全不同
- 视频基础元数据读取 —— 视频元数据的边界
- 本地优先就是隐私优先 —— 元数据清理为什么必须在本机做
