关于
为什么做一个纯本地的元数据工具
「把图片上传到某个网站,让它帮你去掉元数据」这件事本身就自相矛盾:你为了保护隐私,先把照片交给了陌生人。
起点很具体
去年开始,越来越多平台会在上传时读取 C2PA 与 XMP,判断内容是否由 AI 生成。 问题是这个判断非常粗糙:真拍的照片只要经过一次生成式填充、一次 AI 降噪, 就会被标上「AI Info」。摄影师、电商卖家、设计师都遇到了同一个麻烦。
当时能找到的在线工具几乎全是「上传 → 服务器处理 → 下载」的架构。 对一张要清理 GPS 的照片来说,这个流程等于先把位置发给了一个不知名的服务。
所以架构上只有一个选择
| 典型在线工具 | 本工具 | |
|---|---|---|
| 处理位置 | 服务端 | 你的浏览器 |
| 文件是否上传 | 是 | 否 |
| 能否断网使用 | 不能 | 页面加载后可以 |
| 处理量限制 | 按服务器配额 | 按你的内存 |
| 服务方能否看到你的图 | 能 | 不能 |
代价也很明确:浏览器里没有 ffmpeg,所以我们自己写了 JPEG 段、PNG 数据块、RIFF chunk、 PDF 对象表与 MP4 原子树的解析器;HEIC 靠 wasm 解码;C2PA 签名校验跑在 wasm worker 里。 这些都是为了实现「文件不离开设备」这一个承诺。
三个刻意的克制
- 不做像素级 AI 检测。浏览器端的「像不像 AI 画的」只能是启发式猜测,把它展示成结论会误导人。 探测器页面的第 3 层明确标注「未上线」,而不是给一个看起来很专业的百分比。
- 不重新编码。JPG / PNG / WebP 的清理走的是段级重写,像素数据逐字节保留。 唯一例外是 HEIC / AVIF —— 它们的元数据与解码器结构绑在一起,只能解码重编,页面会明确提示。
- 不承诺结果。清理后平台是否仍显示 AI 标识,取决于平台自身的判定逻辑。 我们只保证「文件里不再有可读的 C2PA / XMP / EXIF / IPTC」。
不碰你的文件
没有账号系统,没有分析脚本追踪你的文件,没有后台任务队列。 页面加载完成后所有逻辑都在本地执行,服务端只负责发送静态资源。 页面访问统计(GA4 与百度统计)只记录路径、来源、设备与事件计数, 不含文件名、不含元数据内容。具体见隐私说明。
发现 bug 怎么办
元数据处理最怕的是「静默损坏」:文件看着正常,其实结构已经坏了。 如果你遇到清理后打不开、显示异常、或者平台行为反常的情况,请带上样本反馈 —— 引擎有专门的验证脚本覆盖各类边界情况,新问题会直接变成测试用例。
联系方式见联系页。