HEIC 是什么?为什么 iPhone 的照片在 Windows 上打不开

.heic 从哪来、苹果为什么换用它、发到电脑上到底哪一步坏了,以及把它变成 JPG 的三种办法。

一句话

HEIC 是 iPhone 从 2017 年起拍照默认使用的文件格式。同一张照片,它占的空间大约是 JPG 的一半——这是苹果采用它的原因,也是苹果生态之外几乎没人要它的原因。Windows、多数网页上传表单、旧一点的安卓手机和很多冲印服务,要么拒收这个文件,要么显示一个空白缩略图。解决办法是把照片转成 JPG:要么在手机设置里一次性改掉,要么在需要发送时按文件转。

这个格式从哪来

HEIC 的全称是 High Efficiency Image Container(高效率图像容器)。它本身不是一种压缩方法,而是一个盒子。盒子的格式叫 HEIF(High Efficiency Image File Format),由 MPEG 工作组在 2015 年定为 ISO/IEC 23008-12 标准。盒子里的图像数据用 HEVC 压缩——就是 4K 流媒体在用的 H.265 视频编码,只不过用在一帧静止画面上。HEIF 也能装别的编码(AVIF 就是装了 AV1 的 HEIF),但编码是 HEVC 时,苹果给文件的扩展名是 .heic。

苹果在 2017 年 9 月随 iOS 11 把 iPhone 相机的默认格式换成了 HEIC。理由是存储:一帧 HEVC 内帧在同等观感下,体积大约是 JPEG 的 40–50%;而当时 iPhone 还在卖 32 GB 的机型,摄像头已经到了 1200 万像素。5000 张照片按每张 3 MB 算是 15 GB,按 1.5 MB 算是 7.5 GB。这个格式还能装下 JPEG 装不了的东西:10 位色深、人像模式用的深度图、实况照片背后的三秒短片、连拍序列,全在一个文件里。

到了别处为什么坏

两个问题叠在一起。

专利。 HEVC 被好几个专利池覆盖(MPEG LA、Access Advance、Velos Media),授权条款多年来既不清楚又不便宜。微软在 Windows 10 上的做法是:免费提供容器支持,但把 HEVC 视频扩展 这个解码器放在 Microsoft Store 里卖 0.99 美元;没装它,“照片”应用只显示文件名和一个灰框。有些品牌机预装了免费的“设备制造商提供”版本,大多数没有。Chrome、Firefox、Edge 出于同样的授权原因,从来没加过 HEIC 解码——所以任何在浏览器里预览图片的网站,看到 HEIC 就是一个不认识的二进制块。macOS 和 iOS 上的 Safari 能原生解码,因为苹果付了授权费。

2017 年之前写的软件。 全世界相当一部分上传表单、内容管理系统、电商后台和照片打印机,是按扩展名或文件头几个字节来校验文件的,写它们的时候“照片”就是 JPEG、PNG、GIF。它们把 .heic 当“不是图片”拒掉。安卓从 9(2018 年)开始支持解码 HEIF,但很多相册和聊天应用为保险起见,发出去时仍然转成 JPEG。

实际结果就是:iPhone 用户隔空投送给 Mac,一切正常;同一张照片通过数据线、邮件或网盘到了 PC,收件人打不开。

为什么你常常没察觉

iOS 在好几条路径上会自动把 HEIC 转成 JPEG,所以很多人根本不知道这个格式的存在。通过“信息”、邮件、WhatsApp、Instagram 或多数第三方应用分享,走的是系统分享面板,交出去的是 JPEG。设置 → 照片 → 传输到 Mac 或 PC → 自动 这个选项在 USB 拷贝时做同样的事。原始 HEIC 漏出去的,是那些“复制文件”而不是“分享”的路径:iCloud 云盘、文件 App、设置为 保留原片 的 USB 传输、Google 相册的备份,以及任何为了画质而索要原件的地方。

三种拿到 JPG 的办法

  1. 不再产生它。 设置 → 相机 → 格式 → 兼容性最佳,此后相机直接拍 JPEG。照片体积大约翻倍,10 位色深没了,但你发出去的东西再也不会被退回。已有的 HEIC 不会被转换。
  2. 出门时转。 把 传输到 Mac 或 PC 设为 自动,让 iOS 在 USB 拷贝时转换;用应用“分享”而不是复制文件。
  3. 转已经到手的文件。 已经落到 PC 上的那几个文件,用 HEIC 转 JPG 在浏览器里解码——解码器(libheif,编译成 WebAssembly)在你自己的机器上跑,一整个文件夹的家庭照片不会上传到任何地方。它支持批量,保留拍摄日期和方向,需要无损副本时也能输出 PNG。如果还要把照片压小了发邮件,同一次压缩就行。

转换会丢什么

HEIC 转 JPEG 是一次有损重编码:解码器还原出完整图像,JPEG 编码器再压一遍。质量设在 85–90 时,正常观看看不出差别,但差别存在,所以在乎母本的话把 HEIC 留着。有两样东西会被直接丢掉,因为 JPEG 里没有它们的位置:深度图(人像模式的虚化不能再调)和实况照片的短片。元数据——拍摄时间、机型、拍摄时记录的 GPS 位置——会随 EXIF 块带过去,所以在把文件公开发布之前,看一眼你是否想要位置信息留在里面。

这事会过去吗

慢慢地。Windows 11 在多数机器上仍然对 HEVC 解码器收费。浏览器选了 AVIF 作为下一代静态图片格式,因为 AV1 免专利费——所以网页正在收敛的那个“现代图片格式”是 HEIC 的兄弟,不是 HEIC 本身。长期大概率的局面是:HEIC 留在苹果设备上做拍摄格式,JPEG(或 AVIF)做交换格式,转换发生在两者之间的某个地方——最好是一个不需要上传照片的地方。

本文用到的工具