HEIC 文件是一种现代的照片容器格式,也是 iPhone 默认生成的照片格式。它所基于的标准是 HEIF(High Efficiency Image File Format,高效图像文件格式),由 MPEG 发布,这个标准组织也制定了 MP3 音频和 MP4 视频。HEIC 是 HEIF 的一种“口味”,其中的图片使用 HEVC 压缩,也叫 H.265,一种视频压缩方法。Apple 采用它,是为了在大幅减小文件体积的同时,保持相近的照片质量,并保存现代相机额外生成的信息,例如景深信息、连拍以及可撤销的编辑,而这些都是单张平面图像无法表达的。
HEIC 如何存储其图片
HEIF 的结构借鉴了 MP4:文件是一个带标签的盒子树状结构,一个盒子列出它包含的项目,一个记录每个项目数据的起始位置,一个保存属性,还有一个保存数据本身。内部的图片使用 HEVC 的静态图像编码技术:从相邻块预测每个块,将差值转换为频率系数并对其取整。这样通常是有损压缩,文件变小正是由此而来;也允许无损压缩,但很少见。
容器部分更有意思,因为一个 HEIC 不一定只包含一张图像。一个文件可以包含:
- 主照片,通常以平铺网格的形式存储,在显示时再拼接。
- 缩略图和其他低分辨率预览图。
- 不用于直接查看的辅助图像,例如记录场景各个部分距离远近的深度图,或透明度蒙版。
- 多张相关的静态图片,例如连拍或一组序列照片。
- 一份未修改的原始图像加上一组描述编辑操作的指令,以便之后可以撤销这些更改。
正是这些额外内容,让人像模式的背景虚化可以在拍摄后调整,也解释了为什么导出为 JPG 时只会得到一张扁平的图片,而其余内容会被悄悄丢弃。
HEIC 携带哪些元数据
JPG 里包含的所有信息,这里也有,只是存储方式不同;此外还有只有容器格式才能表达的内容。元数据指的是与像素一同保存的描述性信息。
- EXIF 是相机元数据标准,在 HEIC 中,它作为一个项目存放在文件的元数据盒中,而不是像传统格式那样作为文件开头的标记。字段依然是你熟悉的那些:
Make、Model、LensModel、DateTimeOriginal、ExposureTime、FNumber、ISOSpeedRatings和FocalLength。 - GPS 标签 是 EXIF 的一部分,提供纬度、经度、海拔以及 UTC 时间戳,手机拍摄的照片通常都会包含这些信息。
- 制造商注释 是厂商的私有数据块,在 Apple 设备上会记录大量关于照片是如何拍摄和处理的信息。
- XMP 是 Adobe 的 XML 元数据,也可以作为项目存储,包含作者、描述、关键词和评分。
- 结构属性 的行为类似元数据:旋转属性和镜像属性,用来在不重新编码像素的情况下改变图像朝向;裁剪属性,用于收窄可见区域;颜色信息属性,保存 ICC 配置文件或色彩空间代码;以及像素宽高比。
由于一个文件可以包含多张图像,针对 HEIC 的报告可能会显示多组字段,每个项目一组,而不是一份单一的整洁列表。有两个属性特别值得了解:旋转属性意味着图片的存储方向与显示方向不同;裁剪属性意味着文件中仍然保存着你在屏幕上看不到的像素。就个人隐私而言,来自手机的 HEIC 是信息最丰富的图像文件之一:位置、设备型号、拍摄时间,以及把静态图与 Live Photo 视频配对的标识符,默认都会包含在其中。
何时使用 HEIC
HEIC 非常适合用来保存照片。与相似质量的 JPG 相比,文件更小,格式支持每个颜色通道 10 比特,以获得更平滑的天空和渐变效果,还能保留深度图和编辑指令,方便之后进行调整。
HEIC 不太适合用于发送给他人。在 Apple 生态以外的支持并不一致:某些浏览器、老款手机、打印机、上传表单和办公应用会直接不接受这种格式,而内部使用的 HEVC 压缩涉及专利授权,拖慢了普及进度。常见的折中做法是自己保留 HEIC,同时分享一份 JPG,接受副本会丢失深度图和其他图像内容的事实。WebP 和 AVIF 也在解决类似的体积问题,但涉及的授权更少。