HEIC 是一个容器,不是一种图像格式
一个 .heic 文件采用的是 ISO 基础媒体文件格式——和 MP4 是同一套 box 结构。它装的是一组条目:通常有一张 HEVC 编码的图片,往往还有缩略图,有时还有深度图、HDR 增益图,或者连拍中的好几帧完整画面。元数据也是其中一个条目。EXIF 位于自己的条目里,由一个引用 box 指明它描述的是哪张图片,而不像 JPEG 那样待在文件头部。
为什么有时候看不到预览
HEVC 涉及专利,所以 Safari 能原生解码 HEIC,而大多数其他浏览器不能。当浏览器拒绝时,工作区会用一个 WebAssembly 解码器把文件解出来生成预览。这条路更慢,遇到大图还可能失败——那种情况下你会拿到标签,外加一句「图片本身无法绘制」的提示。读取元数据从不依赖解码图像,所以无论如何标签都在。
iPhone 实际写入了什么
完整的 EXIF:相机型号、镜头、曝光、方向和拍摄时间;开着定位时还有 GPS 的经纬度,通常连海拔一起。在此之上还有苹果的厂商备注——一个私有块,装着连拍标识、场景分类提示这类东西。实况照片还会关联一段配对的视频,那是另一个文件,本工作区不打开它。
HEIC 的结构
- 结构
- 可以存放元数据
- 图像本身
HEIC 把东西放在哪里
- meta
- 装着文件里所有非图片条目的那个 box。
- iinf / iloc
- 有哪些条目,以及每个条目的字节偏移。
- Exif 条目
- 一个完整的 TIFF 结构 EXIF 块,含相机与 GPS。
- mime 条目
- XMP,当某个编辑器写入过时。
- iref
- 哪个条目描述哪张图片。
- colr
- 色彩配置文件,重编码时会丢失。
关于 HEIC
浏览器显示不了 HEIC,还能读它的信息吗?展开
可以。读标签是遍历文件的 box 结构,不需要 HEVC 解码器。所有标签你都能看到;可能缺的只是预览图。
iPhone 拍的 HEIC 里有 GPS 吗?展开
只要拍摄那一刻相机的定位权限是开着的,就有,通常还带海拔。把文件拖到上面,如果有坐标你会直接看到。
怎么去掉 HEIC 里的元数据?展开
通过重编码清理,因为没有浏览器能写 HEIC。图像会被解码并导出为不含任何嵌入信息的 JPEG——你会得到一个干净的文件,但换了容器,画质取决于这次重编码。
为什么我的 HEIC 里是好几张照片?展开
因为容器允许。连拍、人像模式的深度图和 HDR 增益图都以额外条目的形式和主图存在一起。标签表显示的是主图的元数据。
能做什么
- 删除 EXIF 数据
- 拖入一张照片,下载一份去掉嵌入元数据的副本。JPEG 无损删除 EXIF 段;HEIC、PNG、WebP 等格式通过重编码去除。文件不会上传。
- 删除 GPS 位置
- 先看清照片带着哪组坐标,再下载一份不含坐标的副本。JPEG 只去掉位置标签,其余信息原样保留。文件不会上传。
- 编辑 JPEG EXIF
- 修改 JPEG 的标题、作者、描述、版权、软件和拍摄时间,然后下载编辑后的副本。全部在本地完成,原文件不会被改动。
- XMP、IPTC 与 ICC 查看
- 读取文件携带的每一个元数据分组 —— EXIF、XMP、IPTC、ICC、厂商备注 —— 分组呈现并可导出为 JSON。适用于素材质检、取证和排查处理流程。文件不会上传。
- 打开多张照片
- 一次打开最多五十张照片,看清哪些带有位置信息,并把整批导出成表格。全程不上传,原文件也从不被写入。