Takeout JSON

Google Takeout 里的 HEIC 转 JPG,怎样不丢拍摄日期?

为什么 Google Takeout 导出里全是 HEIC,怎样转成 JPG 而保留日期和 GPS,以及那种其实是 JPEG 的假 HEIC 文件。

你的 Takeout 里一半的照片以 .HEIC 结尾。Windows 显示成空白图标,电视不认,你试的转换工具转出来的 JPG 没有日期也没有位置。现在每张照片有两份,哪份都不对。

HEIC 本身不是问题。随便转才是。

为什么 Takeout 里全是 HEIC

iPhone 从 2017 年起默认拍 HEIC。Google 相册存的是手机上传的原样,Takeout 原样交还。如果你的相册来自 iPhone,此后的照片大多是 HEIC。Android 手机大多拍 JPG,不过有些三星机型也提供 HEIF 选项。

同等画质下 HEIC 文件大约是 JPG 的一半。这是苹果用它的原因。缺点是兼容性。Windows 10 和 11 要从 Microsoft Store 装解码扩展才能显示。老软件、大多数智能电视、很多网页上传框和一些 NAS 相册应用根本不读。Linux 桌面要装 libheif

如果照片要去苹果照片、Immich、PhotoPrism 或较新的 Android 手机,就保持 HEIC。这些都能读,转换只会损失一点画质,空间还翻倍。目标读不了,或者你想所有照片统一成一种格式,再转。

随便转会丢什么

大多数转换工具解码图像,再重新编码成 JPEG。其中很多会写出一个完全没有元数据的新 JPEG。带日期、相机型号和 GPS 的 EXIF 区块被扔掉了。转出来的照片显示的是转换日期,和 Takeout 造成的问题一模一样,只是多了第二批文件。

HEIC 里的日期和 GPS 存在和 JPEG 一样的 EXIF 区块里。好的转换工具会原样复制过去。删任何东西之前先检查结果:右键一个转好的 JPG,看属性或显示简介,确认「拍摄日期」和相机型号还在。

先做 Takeout 的元数据合并,再转换,顺序不能反。附属文件里的日期写进 HEIC 之后,保留元数据的转换会把它带进 JPG。先转的话,附属文件名和新文件对不上,合并就得换一种做法。

手动转

Mac 上,在访达里选中文件,右键,「快速操作」,「转换图像」,选 JPEG 和完整尺寸。或者在终端里:

for f in *.HEIC; do sips -s format jpeg "$f" --out "${f%.*}.jpg"; done

sips 保留 EXIF,包括日期和 GPS。

Windows 上,装了 HEIF 扩展之后「照片」应用可以把 HEIC 另存为 JPG,但一次一张。批量的话,ImageMagick 免费:magick mogrify -format jpg *.HEIC。它默认保留 EXIF。

Linux 上,libheif-examples 包里的 heif-convert 能做:for f in *.HEIC; do heif-convert "$f" "${f%.*}.jpg"; done。它会复制 EXIF。

如果某个转换工具确实把元数据丢了,exiftool 可以从 HEIC 复制回来:

exiftool -tagsfromfile %d%f.HEIC -all:all -overwrite_original -ext jpg .

在 HEIC 和 JPG 成对放在一起的文件夹里运行。

其实是 JPEG 的 HEIC

偶尔 Takeout 里有个文件名字是 .HEIC,内容却是 JPEG 数据。这是照片在某个环节被转换过但保留了旧名字,有些看图软件会因为扩展名和内容不符而拒绝打开。Mac 或 Linux 上 file IMG_1234.HEIC 能告诉你里面到底是什么。说是 JPEG,就改名成 .jpg,到哪都能开。反过来的情况也有,名字是 JPEG 内容是 HEIC,但更少见。

只看扩展名的转换工具在这些文件上会失败或者产出坏文件。看文件内容的工具能正常处理。

用软件转

Takeout JSON Metadata Fixer 把 HEIC 转 JPG 作为修日期那一次运行里的一个选项,支持 Windows、Linux 和 Mac。

它先把附属文件里的日期和 GPS 合并进每张照片,再解码 HEIC,写出一个带着这些元数据的 JPG。它读文件内容而不是扩展名,所以藏在 .HEIC 名字后面的 JPEG 会变成一个元数据完整的普通 JPG。歪的照片同时被转正,因为方向信息也是差的转换会丢的东西之一。Windows 和 Linux 上软件自带 HEIC 解码器,不需要 Microsoft Store 的扩展或发行版的软件包。不打开这个选项,HEIC 文件原样通过。

JPG 以高质量重新编码,所以比 HEIC 原件大。空间允许的话保留原件。前 1000 张照片免费。

如果你只是要转换,日期本来就是对的,上面的免费工具就够了。软件的价值在于转换、修日期和整理一次做完。Takeout 之外的通用转换建议见 HEIC 转 JPG 保留拍摄日期

常见问题

转成 JPG 会损失画质吗?

一点点。JPEG 是对一个有损来源的有损再编码。高质量设置下屏幕上看不出差别。归档保留 HEIC,分享用 JPG。

实况照片能转吗?

实况照片的静态部分和任何 HEIC 一样转。视频片段是单独的 MP4,保持不动。苹果照片配对同名的 JPG 和 MP4,和配对 HEIC 和 MP4 一样。

Windows 为什么把 HEIC 显示成空白图标?

它需要 Microsoft Store 里的「HEIF 图像扩展」,有时还要付费的「HEVC 视频扩展」。装了之后文件资源管理器和「照片」能显示 HEIC。别的 Windows 程序可能还是不行。

转出来的 JPG 会保留 GPS 吗?

会,只要转换工具复制了 EXIF。GPS 标签和日期在同一个区块里。转完检查一个文件。