手机照片拷到电脑后日期全变成今天,怎么恢复?
从手机复制照片到电脑经常把日期重置成当天。讲原因、EXIF 拍摄时间和文件时间的区别,以及怎样把正确的日期恢复回来。
你把手机连上电脑,把相册文件夹拷到一个目录里,现在每张照片都显示今天的日期。按日期排序是一堆乱序。好几年的照片,看起来全是今天下午拍的。
为什么复制会重置日期
文件有自己的几个时间:创建、修改、访问。这些属于文件系统,不属于照片。文件被写到一块新磁盘上,新磁盘记一个新的创建时间,也就是现在。修改时间会不会保留,取决于复制的方式。
手机让这件事更糟。Android 通过 MTP(「文件传输」模式)暴露存储,MTP 根本不传创建时间,很多 MTP 传输还把修改时间也设成复制的时刻。iPhone 的隔空投送在 Mac 上保留日期,在别处不可靠。网盘下载、邮件附件、微信和 QQ 传的图片,都是一个带着新日期的新文件。微信按图片发送的还会被压缩、去掉 EXIF,那是另一个问题,见微信保存的照片没有拍摄日期。
这些都没有碰照片本身,只碰了文件系统包在文件外面的那层壳。
活下来的那个日期
JPEG 或 HEIC 内部有一块 EXIF 元数据,是相机在按快门那一刻写的。字段叫 DateTimeOriginal。文件被复制、发邮件或改名,它都不变。它才是真正的拍摄时间。
麻烦在于文件管理器默认按文件系统的时间排,不按 EXIF。文件资源管理器显示「修改日期」。访达显示「修改日期」或「创建日期」。除非有人特意把两者同步过,否则它们都不是拍摄时间。
所以修法是两者之一。要么让软件按 EXIF 排,要么把 EXIF 日期复制回文件的时间戳,让所有程序看到同一个日期。三种日期的完整说明见拍摄时间和文件修改时间的区别。
先确认 EXIF 日期还在
修之前,先确认真正的日期还在文件里。右键一张照片,Windows 上打开「属性」再看「详细信息」,macOS 上「显示简介」,找「拍摄日期」或相机信息。Linux 上 exiftool -DateTimeOriginal photo.jpg 打印出来。
EXIF 日期在,修起来简单且无损。不在,说明照片经过了会去元数据的东西,通常是聊天软件或编辑器里的「另存为」,能恢复的就少了。
手动修文件时间
exiftool 一条命令把整个文件夹的 EXIF 日期复制到文件系统时间上:
exiftool "-FileModifyDate<DateTimeOriginal" -r .
Windows 和 macOS 上还可以设创建时间:
exiftool "-FileCreateDate<DateTimeOriginal" "-FileModifyDate<DateTimeOriginal" -r .
Linux 上大多数文件系统没有用户程序能改的创建时间,修改时间是要紧的那个。
这之后,在任何文件管理器里按日期排序都是正确顺序。不花钱,不改图像数据。
反过来的情况,文件时间是对的而 EXIF 缺失,少见但在编辑或导出过的照片上会有。exiftool 也能反向复制,"-DateTimeOriginal<FileModifyDate"。只在你确定文件时间正确时才这么做,因为这是往照片内部写。
下次怎么避免
Android 上,用 Syncthing 这类同步软件,或者用手机自带的文件管理器拷到 U 盘上,比 MTP 更容易保住修改时间。iPhone 上,Mac 的「图像捕捉」保留日期,Windows 的「照片」导入也保留。都不完美。可靠的答案是不要在乎文件时间,信 EXIF,相册软件就是这么做的。
用软件
Takeout JSON Metadata Fixer 对一个文件夹或整个导出做的就是上面 exiftool 命令做的事,先试运行。
把拷过来的文件夹拖进去。它读每张照片的 EXIF 日期,写到文件的创建时间和修改时间上,访达和文件资源管理器就排对了。需要的话,它还把文件名改成以日期开头,按年/月分进文件夹,这样在完全忽略日期的程序里也看得出顺序。
它可以原地整理一个文件夹,可选一个「原始文件(整理前)」文件夹放没动过的文件。视频的日期从它自己的创建时间元数据读。完全没有日期的照片退回用文件时间,或者你给整个文件夹设一个日期。
如果照片是从 Google 相册来的而不是直接从手机来的,软件还会读 Google 附带的 .json 附属文件,那种情况下真实的日期藏在那里。见 Google Takeout 导出的照片日期全不对。
离线运行,Windows、Linux 和 Mac,界面有简体中文。1000 张免费。无限制一次性 19.99 美元。
常见问题
复制把什么东西弄坏了吗?
没有。图像和它的 EXIF 没变。只有文件外面的文件系统时间被重置了,而那些可以从 EXIF 重建。
为什么手机相册顺序是对的,电脑上不对?
手机的相册 App 读 EXIF,或者它自己记录的拍摄时间数据库。电脑的文件管理器读文件系统时间。同一批照片,不同的字段。
传到 Google 相册、iCloud 或 Immich 会用错的日期吗?
一般不会。它们都先读 EXIF,只在 EXIF 缺失时才用文件时间。EXIF 完好的照片即使文件时间是错的也能正确导入。没有 EXIF 的照片会显示复制日期,这就是上传前先修好缺失那些的原因。
时区有影响吗?
老照片的 EXIF DateTimeOriginal 不带时区。新手机会加一个 OffsetTimeOriginal 标签。把日期复制到文件时间戳时,工具按电脑的本地时区算,所以在国外拍的照片可能差几个小时。日期几乎总还是对的。