HEIF & HEVC图像格式你知道多少?哪个有优势?


在升级 iOS 11 之后 。iPhone 7 及更新的设备内的照片存储将不再用 JPEG 了 。而采用了一种新的图片格式 HEIF(发音同 heef) 。在 iOS 中对应的文件后缀为 .heic。其编码用的是 HEVC(这个发不了音 。哈哈哈)格式 。又称 H.265 (这个就很熟悉了 H.264 的下一代) 。同时视频也用 HEVC 作为编码器 。对应的文件后缀还是 .mov。
这里要注意他们俩的关系 。HEIF 是图片格式 。而 HEVC 是编码格式(类似 H.264,VP8) 。HEIF 是图片容器(类似于视频的 mkv 。mp4 后缀) 。而用 HEVC 进行编码的 HEIF 图片就是后缀为 .heic 的图片 。也是苹果主要使用的格式 。
这两个都是很新的标准 。分别在 2015 和 2013 年才被 ISO 批准 。这篇文章主要介绍一下 HEIF 格式和与其他图片格式相比的优劣 。
发展史如下:

HEIF & HEVC图像格式你知道多少?哪个有优势?

文章插图
screenshot
什么是 HEIF?
HEIF & HEVC图像格式你知道多少?哪个有优势?

文章插图
screenshot
这张图是 WWDC Session 511 的形容 Heif 的一句英文诗 。JPEG 很大 。但是 HEIF 和小 。
【HEIF & HEVC图像格式你知道多少?哪个有优势?】HEIF 全称 High Efficiency Image Format (HEIF) 。是由 Moving Picture Experts Group 制定的 。存储图片和图片序列的格式 。
相关的介绍位置这边可以看到 nokiatech.github.io/heif/。对的 。你没有看错 。是 Nokia 的技术人员们制定的 。相比 JPEG。PNG 等传统的图片格式来说 。HEIF 可算是相当年轻了 。但是这种格式相比 JPEG 等有很多的优点 。
压缩比高 。在相同的图片质量情况下 。平比 JPEG 高两倍 。
能增加如图片深度信息 。透明通道等辅助图片 。(苹果正是通过这个就能实现动态的调整图片的景深) 。
HEIF & HEVC图像格式你知道多少?哪个有优势?

文章插图
depth
支持存放多张图片 。类似相册和集合 。(实现多重曝光的效果)
HEIF & HEVC图像格式你知道多少?哪个有优势?

文章插图
screenshot
支持多张图片实现 GIF 和 livePhoto 的动画效果 。
无类似 JPEG 的最大像素限制 。
支持透明像素 。
分块加载机制 。
支持缩略图 。
在这个 Nokia 网站上可以看到相关的例子 。
文件组成
在视频文件中 。容器和编码是独立开的 。比如 mp4,mkv 等格式是容器 。而 H.264,VP8 等是编码 。但是图像文件中 。像 JPEG 就是混合在一起的(所以它不好用啊 。哈哈哈哈) 。HEIF 就把容器和编码分开了 。有用来存放单个或者多个图像的容器 。
所以基于不同的编码器 。会有不同的文件后缀 。
HEIF & HEVC图像格式你知道多少?哪个有优势?

文章插图
Apple 设备中默认使用的都是 HEVC 的编码的 HEIF 格式 。
在 Apple 所编码的 HEIF 的文件组成大致如下图 。其 mdat - Media Data 中存放的是 exif 信息 。缩略图(320*240) 。和 HEVC 编码后的图片:
HEIF & HEVC图像格式你知道多少?哪个有优势?

文章插图
screenshot
HEIF 底层是默认 tiled 。就是片状的有 512x512 个 。由一个个小的图块 。组成一张大图 。这一特性有如下的优点:
加速解码
缩放加快(不用加载整张图片)
裁剪加快
HeifTile 和 SystemTile (CATiledLayer 等系统所提供的分块加载)是不一样的 。但是两者结合会有很大的提升 。所以在加载和处理特大图片时 。性能有大幅度的提升 。
HEIF 所采用的熵编码也和 JPEG 不一样 。JPEG 是用的霍夫曼编码(Huffman) 。而 HEIF 使用的是基于上下文的自适应二进制算术编码(CABAC) 。编码的是数据量更小且更快 。
兼容性
每当一个新的技术推进至工业化 。兼容性无疑是最重要的考量点 。像 HEIF 这样的图片格式 。并不像 JPEG / PNG 等已经被广泛应用和适配了 。估计在 Apple 推出之前 。大部分开发者和我一样应该都是不知道的 。目前工业化的体系内 。对 HEIF 几乎是不兼容 。Windows 上无法打开 HEIF 文件 。10.13 前的 macOS 也无法打开 。苹果在推行这一技术的时候 。在内部也是做了很多兼容工作的 。
对一般用户
一般情况下 。用户是对这个格式无感知的 。因为只有在新款支持硬解码的 iOS 手机内部是以 heif & hevc 格式来存储照片和视频的 。而在用户通过 Airdrop 或者数据线传送到电脑上的时候 。对不兼容的设备会自动转换到 JPEG 的格式 。所以也不会影响你使用微信 。微博等软件 。
不过在苹果内部的 app 中 。基本都已经用上了这一技术 。如照片 。FaceTime 等应用 。意味着以后同等储存空间能存放更多的照片和视频 。同时 FaceTime 也能节省更多了流量 。相同网络情况下 。FaceTime 也会更加清晰 。

推荐阅读