HEIF

高效率图像文件格式（High Efficiency Image File Format， HEIF，也称高效图像文件格式），是一个用于单张图像或图像序列的档案格式。它由动态影像专家小组（MPEG）开发，并在MPEG-H Part 12（ISO/IEC 23008-12）中定义。

HEIF规范也定义了高效率视频编码（HEVC）编码的内嵌图像和HEVC编码的图像序列的存储方式，其中以受约束的方式应用帧间预测。

HEIF文件与ISO基本媒体文件格式（ISOBMFF，ISO/IEC 14496-12）兼容，并且还可以包括其他媒体流，例如定时的文本和音频。

## 历史

HEIF的要求和主要用途于2013年定义。该规范的技术开发用时约一年半，并于2015年夏季完成。

## 用例

HEIF支持的用法包括：

- 存储单个或多个图像及其缩略图
- 存储连拍照片
- 支持同时捕获视频和静止图像，即将静止图像和定时图像序列存储在同一文件中
- 高效地表示动画和动态静图
- 存储焦点堆叠和曝光堆叠到同一个容器文件
- 存储从其他图像文件派生的图像，无论是以非破坏性图像编辑操作为目的派生的图像，还是作为预先计算派生的图像
- 支持存储其他媒体，例如音频和定时的文本，将定时的图像序列存储在同一个容器文件中，并且同步播放。

由于HEVC支持各种色度格式和样品保真度至无损编码，该格式可以满足当今消费类设备所有的图像存储需求，从典型的8位图像到高端、专业设备所要求的高保真度和动态范围的16位图像。HEIF促进的一些使用场景如下：

### 数码相机和智能手机

为了节约存储空间，HEIF封装的HEVC编码的图像可以用于压缩全分辨率图像，同时保留一个较低分辨率的JPEG副本（例如4K分辨率或更低）用于屏幕显示。

数码相机和智能手机可以使用HEIF来实现单文件存储连拍、焦点堆叠或曝光堆叠的照片。与此类似，拍摄的视频与静态图像也可以存储在同一个HEIF文件中。HEIF还可以将任何图像集合存储在单个文件中，从而可以轻松分享。

### 网页和接入互联网的图像应用程序

HTML5.2的 图片元素 提供了为同一图像指示多个替代方案的能力，网页浏览器可以选择最适合其目的的一份。网页和连接的应用程序使用HEIF的一个动机是减少网页和图像内容的下载时间。

### 图像编辑

改变方向和裁剪是HEIF的基本功能，并且不需要重新编码图像。此外，HEIF引入了非破坏编辑操作的框架，具体可由外部规范指定。图像编辑应用程序可以使用此功能将编辑指令与原始图像保存在同一文件中。

## 特性

在ISOBMFF中，连续或定时的媒体/元数据流形成一个轨道（track），而静态媒体或元数据作为项（items）存储。也是因此，HEIF具有如下基本设计：

- 静态图像作为项存储。所有图像项都独立编码，解码不依赖其他项。一个文件中可以包含任意数量的图像项。
- 图像序列存储为轨道。可以将图像序列轨道指定为以定时或非定时的方式显示，例如作为画廊或图片专辑。在图像之间存在编码上的依赖关系时，使用图像轨迹轨道而非图像项。
- 一个文件可以包含图像项、图像序列轨道以及其他媒体。例如，可以创建HEIF文件，其中包括符合HEIF的图像项目或图像序列轨道，以及符合ISOBMFF的任何衍生格式的音频或定时文本轨道。

根据上述设计原则，HEIF文件可以存储下列数据类型：

- 图像项（Image Items）：存储单个图像、图像属性或缩略图。
- 图像衍生（Image Derivations）: 衍生图像是在运行时基于旋转、网格和叠加等描述生成的。这些图像取决于存储在HEIF文件中的其他图像。衍生图像的存储空间很小。
- 图像序列（Image Sequences）：存储多个时间相关或时间预测的图像（如突发式照片拍摄或电影图形动画）其属性和缩略图。可以使用不同的预测选项来利用图像之间的时间和空间相似性。因此，即使将数十张图像存储在同一个HEIF文件中，文件大小也可以大幅降低。
- 辅助图像项（Auxiliary Image Items）: 存储补充另一图像项目的图像数据。一个alpha平面或深度图是这种图像的例子。这些数据并非如此显示，而是以各种形式用于补充另一图像项目。
- 图像元数据（Image Metadata）：存储同一个HEIF文件中存储图像的EXIF、XMP等元数据。

## 比较

### 特性比较

下表显示了不同图像格式的比较：

HEIF (.heic)｜JPEG/Exif｜PNG｜GIF (89a)｜WebP｜JPEG-XR / TIFF｜JPEG-XR / JPX｜BPG

格式和可扩展性

基本容器文件格式｜ISOBMFF｜TIFF｜RIFF｜TIFF

有损压缩｜是 (HEVC)｜是 (JPEG)｜否｜否｜是 (VP8)｜是｜是｜是 (HEVC)

无损压缩｜是 (HEVC)｜是 (TIFF Rev 6.0)｜是 (PNG)｜是 (GIF)｜是 (VP8L)｜是｜是｜是 (HEVC)

可扩展至其他编码格式｜是｜是｜否｜否｜否｜是｜是｜否

元数据格式（在内部、顶部）｜Exif, XMP, MPEG-7｜Exif｜Exif, XMP｜Exif, XMP｜JPX, (XMP)｜Exif, XMP

可扩展至其他元数据格式｜是｜否｜否｜否｜否｜否｜是（基于XML）｜是

其他媒体类型（音频、文本等）｜是｜Audio｜否｜否｜否｜否｜是｜否

多图像特性

同一个文件中多个图像｜是｜否｜否｜是｜是｜否｜是｜是

图像序列/动画｜是｜否｜否｜是｜是｜否｜是｜是

图像编码｜是｜否｜否｜否｜否｜否｜否｜是

派生图像

多次90度旋转｜是｜是｜否｜否｜否｜是｜是｜否

裁剪｜是｜否｜否｜否｜否｜否｜是｜否

平铺/堆叠｜是｜否｜否｜否｜是｜否｜是｜否

可扩展至其他编辑操作｜是｜否｜否｜否｜否｜否｜否｜否

辅助图片信息

透明度（alpha通道）｜是｜否｜是｜否｜是｜是｜是｜是

深度映射｜是｜否｜否｜否｜否｜否｜否｜否

是｜是｜否｜否｜否｜是｜是｜是

备注

上述比较使用了下列参考资料：

图像格式｜版本或日期｜参考资料/网址

HEIF (.heic)｜03/2015｜ ISO/IEC 23008-12

JPEG｜`ISO/IEC 10918-1 | ITU-T Rec.`T.81 http://www.w3.org/Graphics/JPEG/itu-t81.pdf

Exif｜http://www.cipa.jp/std/documents/e/DC-008-2012_E.pdf

PNG｜http://www.w3.org/TR/PNG/

GIF｜89a

WebP｜https://developers.google.com/speed/webp/docs/riff_container VP8L: https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification

JPEG-XR｜ISO/IEC 29199-2`| ITU-T Rec.`T.832 ISO/IEC 15444-2 | ITU-T Rec. T.801 (for JPX)

BPG｜0.9.5

备注：可以肯定的是，该比较表中的摘要在涉及不同格式的特征时有些可能不完整。例如，该表没有涵盖JPEG的某些扩展。

## 语法和结构

HEIF符合ISO基本媒体文件格式（ISO/IEC 14496-12）。图像项存储在根级元框中，图像序列存储为视频媒体轨。

一个文件可以包含图像项目、图像序列轨道以及其他媒体。创建符合HEIF规范的文件时可以包含图像项、图像序列轨道，以及任何符合ISOBMFF的衍生格式的音频和定时的文本轨。

符合ISOBMFF的文件由称为框（box）的数据结构序列组成，每个数据结构都包含一个四字符代码（4CC）指示框的类型、框的大小（以字节为单位）和框的有效载荷。框可以嵌套，即框中可以包含其他框。ISOBMFF和HEIF对框的顺序和层次结构有进行约束。

### 图像项

HEIF允许为不同图像项之间存储共享的图像属性。属性有两种：描述和变形。描述属性提供有关图像项的信息，而不对图像本身进行修改。变形属性提供有关图像项需要完成的变形修改的信息。HEIF标准规定了旋转90°、180°和270°的变形属性以及裁剪属性。除了描述属性之外，图像项还可选用元数据项表述特征，例如Exif或XMP元数据。

### 派生图像

派生图像的作用是可以进行无损的图像编辑，使原始编码的图像继续保存在文件中，而新的图像受称为派生图像，可以为一个或多个输入图像应用变换操作来制成。HEIF定义了将派生图像存储为项的一般结构以及几种派生图像的类型。派生图像项的项目类型表示变换操作，而项载荷包含操作的输入参数。输入图像可以是编码的图像或者派生图像。下面列出了HEIF标准中定义的派生图像类型。其他类型可能在其他文档或HEIF标准的更新版本中定义。

### 图像序列

图像序列轨道继承了ISOBMFF的视频轨道的属性和特征。

## 支持的媒体编解码器

HEIF指定了一种结构格式，从中可以派生特定编解码器的图像格式。HEIF还包括封装图像的图像和图像序列以符合高效率视频编码（HEVC，ISO/IEC 23008-2 | ITU-T Rec. H.265）的规范。该标准的未来版本可能包括其他视频和静态图像媒体编解码器。

## HEVC图像文件格式

HEIF标准包括封装HEVC编码的图像和图像序列为HEIF兼容文件的规范。

### 支持

HEIF得到了下列支持：

操作系统

- Microsoft Windows 10（version 1803 预览版，build 17123），在此前需要通过安装名为CopyTrans HEIC for Windows的解码器来实现对HEIF/HEIC的支援，或者安装其它支援HEIF/HEIC的图像管理器。
- macOS High Sierra
- iOS 11
- Android Pie

图像编辑软件

- Adobe Lightroom（仅限macOS High Sierra、iOS 11+及Android 9+）
- Adobe Photoshop CC
- GIMP
- ImageMagick
- Zoner Photo Studio X

其他

- Nokia为网页浏览器提供一个开源JavaScript HEIF解码器
- 开源软件库“libheif”支持读取和存储HEIF文件

## 品牌及MIME类型

HEIF标准中指定的品牌如下表所示。HEIF标准规定了“mif1”和“msf1”结构品牌。另外，HEVC的品牌如表1所列。专有品牌“heic”和“hevc”表示使用了HEVC Main Profile。

HEIF的品牌、MIME子类型和文件扩展名

品牌｜编码格式｜图像/序列？｜MIME类型｜MIME子类型｜文件扩展名

mif1｜任何｜图像｜图像｜heif｜.heif

msf1｜任何｜序列｜图像｜heif-sequence｜.heif

heic｜HEVC（主要或主要静态图片配置）｜图像｜图像｜heic｜.heic

heix｜HEVC（主要10或格式范围扩展配置）｜图像｜图像｜heic｜.heic

hevc｜HEVC（主要或主要静态图片配置）｜序列｜图像｜heic-sequence｜.heic

hevx｜HEVC（主要10或格式范围扩展配置）｜序列｜图像｜heic-sequence｜.heic

互联网媒体类型（也称MIME，多用途互联网邮件扩展）获各种应用程序用于标识资源或文件的类型。MIME类型包括媒体类型（HEIF文件为'image'）和一个子类型，以及零个或多个可选参数。对于多用途文件，可以给予文件的主要用途选择子类型。

可选的编解码器MIME参数可以用来指示文件中存在的轨道和项使用的编码格式。编解码器MIME参数还包括HEVC编码图像项目或图像序列轨道的配置级别值。

`image/heif`、`image/heif-sequence`和`image/heic`尚未注册为MIME类型。

## 相关标准

- MPEG-H
- HEVC（H.265）
- ISO基本媒体文件格式

## 基本资料

- 日语原文：高效率图像文件格式（HEIF）
- 扩展名：.heif, .heifs; .heic, .heics; .avci, .avcs; .avif, .avifs
- _nomimecode：1
- mime：`image/heif`, `image/heif-sequence`; `image/heic`, `image/heic-sequence`
- 统一类型标识：public.heif, public.heic
- 开发者：MPEG
- 格式类型：图像容器格式
- 标准：ISO/IEC 23008-12 (MPEG-H)