HEIC/HEIF 元数据查看
HEIC 和 JPG 的区别
JPG 的 EXIF 元数据存储方式很简单(APP1 段),可以原位直接删掉(见 JPG EXIF 擦除页面)。但 HEIC/HEIF 完全不同:
- HEIC/HEIF 基于 ISOBMFF 容器格式(和 MP4/MOV 同源);
- EXIF 数据嵌在 ISOBMFF 内部的
metabox 里,不是一个独立的、可以直接删掉的段; - 写回 ISOBMFF 的元数据需要重构容器结构,比 JPG 原地删 segment 复杂得多;
- Android 平台的 ExifInterface 可以读 HEIC 的 EXIF,但没有写回能力(缺少
writeAttribute对 HEIC 的实现)。
这就是为什么 ZenConverter 对 HEIC 只支持查看元数据,不支持清理。
能查看什么
ZenConverter 用 Android ExifInterface 读取 HEIC 的元数据值,能覆盖常见的 EXIF 字段:
| 字段类别 | 具体字段 |
|---|---|
| GPS | 经度、纬度、GPS 时间戳 |
| 拍摄时间 | 原始拍摄时间、数字时间、修改时间 |
| 相机信息 | 相机厂商、型号、镜头型号 |
| 拍摄参数 | 光圈、曝光时间、ISO、焦距 |
| 方向 | 旋转标记(手机竖拍/横拍方向) |
这些字段覆盖了绝大多数"想看照片元数据"的场景。
为什么不能清理
清理的技术障碍有三层:
- 平台 API 缺失:Android ExifInterface 不支持对 HEIC 写回属性;
- ISOBMFF 容器结构复杂:即使自己实现写回,也要处理 box 依赖、交叉引用、大小更新;
- 错误成本高:写坏一张 HEIC 会导致整张图片损坏,风险大于收益。
ZenConverter 选择明确不支持而不是假装支持——不会给用户一个"看起来擦除成功但实际没擦干净"的半成品。
如果你需要清理 HEIC 元数据
有两条可行路线:
- HEIC → JPG → 擦除 EXIF:先用 ZenConverter 图片互转把 HEIC 转成 JPG(走 Android 平台 Image API),然后用隐私工具擦除 JPG 的 EXIF。两次转换虽然会有损(JPEG 压缩),但能彻底去掉元数据;
- 桌面端工具:ExifTool、ImageMagick 等桌面端工具对 HEIC 清理的支持比 Android 端完善得多。
ZenConverter 选择路线 1 作为推荐方案。
和 HEIC → 图片路线的关系
ZenConverter 也支持 HEIC 作为图片互转的输入(输出到 JPG/PNG/WEBP/PDF)。这条路线的状态是 Beta,因为:
- HEIC 解码依赖设备的系统 Image API 实现(不是 ZenConverter 自己的);
- 某些老旧或小众 Android 设备的 Image API 不支持 HEIC 解码;
- 解码失败时会明确报错,不会假装成功然后输出损坏文件。
HEIC → 图片转换后的 JPG 不携带源 HEIC 的元数据(图片互转路线不自动拷贝元数据)——所以转完就干净了,不需要额外擦除。
已知边界
- 只支持 Android 8.0+:ExifInterface 对 HEIC 的支持从 API 26(Android 8.0)开始引入;
- 不是所有字段都能读:Android 平台能读哪些 EXIF 字段取决于厂商的 ExifInterface 实现,某些小众设备可能少一些;
- HEIC → 图片的解码路线同样依赖系统:不是 ZenConverter 自己实现的解码器。
相关页面
- JPG 原地 EXIF 擦除与备份恢复 —— JPG 路线能擦除,HEIC 不行
- 视频基础元数据读取 —— 视频也能"读不写"
- 图片格式互转 —— HEIC 互转走 Beta 路线
