换新手机,照片拷过去日期全变成今天?怎样保留拍摄日期
新安卓手机上照片显示今天的日期,是因为日期不在文件里。复制之前先把拍摄日期写进每张照片的 EXIF,之后用什么方式拷贝,顺序都不会乱。
想让照片搬到新安卓手机后还保留原来的日期,关键是复制之前,每张照片的拍摄日期必须写在文件里面,也就是 EXIF 数据里。手机相册先读这个日期。只有它不存在时,相册才用文件时间,而一复制,文件时间通常就变成了今天。所以先在电脑上把 EXIF 修好,再用任何方式拷贝都行。
你把十年的照片拷进了新的安卓手机。打开相册,全部堆在最上面,好像都是今天拍的。手机上的 Google 相册也一样,或者有的日期对,有的是今天。这篇讲为什么会这样,以及怎样让日期保住。
安卓怎样决定一张照片的日期
安卓有一个媒体文件数据库,叫 MediaStore。DCIM 或 Pictures 里出现新文件时,扫描程序会读取它并记下一个日期。它先看 EXIF 里的 DateTimeOriginal。没有的话,就用文件的修改时间。相册应用按 MediaStore 记下的日期排序。
所以 EXIF 正确的照片,不管怎么到的手机上,都会排在对的位置。没有 EXIF 日期、或者日期错了的照片,按文件时间排序,而传输之后的文件时间几乎总是传输的那一刻。
手机上的 Google 相册对本机文件也是这样处理的。没有 EXIF 的照片会显示文件时间,直到你手动改日期。
为什么传过去的照片都是今天的日期
手机连上电脑、选择「传输文件」,走的是 MTP。MTP 不是磁盘。它是一个协议,把文件一个一个发到手机存储里,由手机来写入。
MTP 根本没法带上创建时间。修改时间能不能保住,取决于手机、电脑和所用的工具。Windows 文件资源管理器有时能保住。macOS 用 Android File Transfer,通常保不住。Linux 用 GVFS,要看版本。哪一种都靠不住。
这就是为什么那么多人传完之后看到全是今天的日期。问题不在相册。文件时间在复制过程中丢了。
哪些照片会丢日期
手机相机直接拍的照片通常有 EXIF 日期,怎么拷都不会丢。出问题的是里面没有日期的文件:
- 微信、WhatsApp 等聊天软件保存的照片。见微信保存的照片没有拍摄日期,还能找回来吗?
- 从 Google 相册导出的照片。见Google Takeout 导出的照片日期全不对?
- 截图、扫描件和下载的图片。
- 用会删掉元数据的软件编辑过的照片。
要修的是 EXIF,不是复制方式
去找一种能保留文件时间的复制方式,方向就错了。把日期写进每张照片里,用什么方式复制都没问题。
先抽查几张。在电脑上运行 exiftool -DateTimeOriginal photo.jpg,就能看到日期在不在。Windows 上右键照片,「属性」,「详细信息」,看「拍摄日期」。如果大部分照片都有,只需要修那些例外。
文件时间正确但没有 EXIF 的照片,在传输之前把文件时间复制进去:
exiftool "-DateTimeOriginal<FileModifyDate" -if 'not $DateTimeOriginal' -r .
这一步要在电脑上、复制之前、趁文件时间还对的时候做。两种日期的区别见拍摄日期和修改日期有什么区别?
哪种传输方式能保留日期?
没有一种可靠,所以 EXIF 日期才重要。不过有的比别的好一些:
- USB 数据线,传输文件(MTP):修改时间可能保住,也可能保不住。
- SD 卡:SD 卡是真正的文件系统,所以修改时间复制后还在。手机仍然先读 EXIF。
- Wi-Fi 传输软件和网盘:通常给每个文件一个新日期。
- Syncthing 这类同步软件:一般比 MTP 更能保住修改时间。
有 EXIF 日期的照片,用上面哪一种都能排对。
视频怎么办?
视频没有 EXIF。它的日期在 MP4 或 MOV 容器里,安卓的扫描程序从那里读。没有这个日期的视频,和照片一样按文件时间排序。
文件放到手机哪里
DCIM/Camera 是手机相机自己保存照片的地方,相册应用把它当作主相机胶卷。放在这里的文件会出现在主视图里。DCIM 或 Pictures 下的其他文件夹,在大多数相册里显示为相簿。
文件夹层级要浅,名字要简单。有的相册会忽略超过两三层的文件夹。文件名带日期也有帮助:以后在文件管理器里、在电视上,顺序都不会乱。命名方式见按拍摄日期批量重命名照片(英文)。
复制完后,相册可能要过一会儿才重新扫描。重启手机可以让它马上扫描。
Google 相册会不会再上传一遍?
如果 Google 相册对相机文件夹开着备份,你拷进 DCIM/Camera 的所有东西都会重新上传到你的 Google 账号。如果你要离开 Google,复制之前先关掉备份。如果你是把图库搬到一个新的 Google 账号,这也许正是你想要的。从 Takeout 导出到新安卓手机的完整流程,见Google Photos export to a new Android phone(英文)。
换的是 iPhone?
规则一样:日期必须在文件里。路线不同,要在电脑上通过 Apple 照片或 iCloud。见how to get Google Photos onto a new iPhone(英文)。
用软件来做
Takeout JSON Metadata Fixer 可以直接导出到一台已连接、并在文件管理器里显示出来的安卓手机。
把手机选为目标位置。软件先把真实日期写进每张照片的 EXIF,来源依次是 Takeout 附属文件、已有的 EXIF、文件时间。这样不管 MTP 怎么处理文件时间,MediaStore 读到的都是正确日期。GPS 也用同样的方式写进去,手机就能按地点归类。文件以日期开头的名字放进 DCIM,HEIC 还可以转成 JPG,给不能显示 HEIC 的手机用。
老视频可以转成 MP4,在相册里就能播放。实况照片可以保持成对,也可以合并成一个 Google 和三星格式的动态照片文件,手机会把它当作一项来播放。
在 Windows 和 Linux 上,软件按文件管理器挂载的方式使用手机。在 macOS 上,用 Android File Transfer 或类似工具挂载的手机也一样能用。导出到手机是 Premium 功能。前 1000 张照片免费,不限数量一次性 19.99 美元,支持 macOS、Windows 和 Linux。
常见问题
拷完之后相册顺序还是不对,怎么办?
让它重新扫描。重启手机,或者清除相册应用的缓存。如果某张照片还是不对,在电脑上查它的 EXIF。没有 EXIF 的话,手机就没有任何依据。
为什么手机上的 Google 相册日期对,相册却不对?
Google 相册自己读 EXIF,也可能从你的账号知道日期。相册读的是 MediaStore。如果 MediaStore 在 EXIF 修好之前就扫描了这个文件,它会一直记着旧日期,直到重新扫描。
能在手机上直接改日期吗?
几张的话可以:Google 相册能手动改日期。几千张就不行了。复制之前在电脑上修好。
拷到 SD 卡再插进手机,会更好吗?
通常会。修改时间复制后还在。但手机扫描 SD 卡的方式一样,所以没有 EXIF 的照片,EXIF 仍然重要。
我要合并两部旧手机的照片,也一样吗?
一样。先修日期,再合并文件夹。
能用这个办法把 iPhone 照片搬到安卓吗?
能。从 iPhone 或 Apple 照片导出时带上元数据,把 HEIC 转成 JPG,然后拷贝。软件负责转换,并保留日期和 GPS。