照片拷到 U 盘日期全乱了?怎样保留拍摄日期和顺序
为什么照片复制到 U 盘或 SD 卡后日期会变,FAT32 和 exFAT 能存什么,以及怎样让日期在任何存储设备上都不丢。
你把家里的照片拷到 U 盘上,插到电视上看,或者给家里人。电视上播放的顺序乱七八糟。在亲戚的电脑上,所有照片的创建日期都是你拷贝的那天。U 盘对日期做了什么。
U 盘能存什么,不能存什么
大多数 U 盘和 SD 卡是 FAT32 或 exFAT 格式,因为这两种在所有设备上都能用。它们都是又老又简单的格式,时间戳能力有限。
FAT32 的修改时间精确到 2 秒,创建时间精确到 10 毫秒,都不带时区。1980 年以前的日期根本存不了。从一个时区的电脑拷到 U 盘,再在另一个时区读,时间就差了两地的时差。
exFAT 好一些:有时区字段,精度也更高。但它存的仍然是文件系统的日期,而文件系统的日期好不好,取决于写入它的那次复制。
复制才是真正的问题。在访达或文件资源管理器里拖放,大多数系统会保留修改时间,但把创建时间设成现在。有的复制工具两个都重置。安卓设备和电视读 U 盘时,显示的可能是其中任意一个。
经得起复制的日期
照片内部的日期。EXIF 的 DateTimeOriginal 是文件字节的一部分。不管什么文件系统、怎么复制,它都跟着图片一起走。U 盘弄不坏它。
问题是,很多读 U 盘的设备不看它。电视自带的看图功能、数码相框和大多数车机,按文件名或文件系统日期排序。相册软件读 EXIF,简单的看图器不读。
所以有两个目标,要两种不同的修法。对相册软件,确保 EXIF 是对的。对简单的看图器,让文件名带上日期,因为文件名是它们都会用来排序的东西。
手动修
先确认 EXIF 完好。在文件夹里运行 exiftool -DateTimeOriginal *.jpg,会列出日期。日期都在的话,这些照片在任何读 EXIF 的软件里都没问题。
为了电视和相框,把日期放到文件名最前面。exiftool 可以做:
exiftool "-FileName<DateTimeOriginal" -d "%Y-%m-%d-%H%M%%-c.%%e" .
这样 2016-08-14-1105.jpg 在任何设备、任何语言下都排在 2016-08-15-0900.jpg 前面,完全不用读元数据。更多命名方式见按拍摄日期批量重命名照片(英文)。
拷到 U 盘之前,也可以把 EXIF 日期复制到文件的修改时间上,这样按文件日期排序的设备也能排对:
exiftool "-FileModifyDate<DateTimeOriginal" .
FAT32 会把它取整到 2 秒、去掉时区,对排序没有影响。
没有 EXIF 日期的照片,比如从 WhatsApp、微信保存的,或者从 Google 相册旧导出里来的,要先把日期写进去。不然重命名会给它们今天的日期,问题只是换了个地方,没有消失。见 Google Takeout 导出的照片怎么恢复正确的拍摄时间。
用软件做
Takeout JSON Metadata Fixer 可以直接把照片整理到 U 盘或 SD 卡上,顺便把日期修好。
把 U 盘选为目标位置。对每张照片,软件把真实日期写进 EXIF:有 Takeout 附属文件就用它,没有就用已有的 EXIF,再没有就用文件时间。它在 U 盘文件系统允许的范围内,把文件时间改成一致。文件名按你选的模板把日期放在最前面,电视就能排对。文件夹可以按年/月分,也可以不分。
照片放进 U 盘的 DCIM 文件夹,相机和很多电视、相框都先找这里。HEIC 可以顺便转成 JPG,因为几乎没有电视能打开 HEIC。横着的照片会被转正,因为电视最容易忽略方向标签。老视频也可以转成 MP4,原因一样。
软件开始前会检查 U 盘的剩余空间,试运行只显示结果、不写入。离线运行,支持 macOS、Windows 和 Linux。前 1000 张照片免费,不限数量一次性 19.99 美元。
常见问题
U 盘该格式化成 exFAT 还是 FAT32?
所有要读它的设备都支持的话,用 exFAT。近十年的电视和电脑大多支持。需要老设备读的话用 FAT32,但要接受单个文件 4 GB 的上限,这对视频有影响。
文件名带了日期,电视上的顺序还是怪,为什么?
有些电视按文件写进 U 盘的先后排序,不按名字。按名字顺序、一个文件夹一个文件夹地复制,通常能解决。也有少数电视根本不排序。
拷到 FAT32 会丢东西吗?
文件时间戳会损失精度和时区。照片本身、它的 EXIF 和 GPS 都不变。重要的东西一样都不丢。
为什么在另一台电脑上,U 盘里的照片全显示今天的日期?
创建时间被设成了复制的时间,而那台电脑默认显示创建时间。改成按修改时间排序,或者把日期放在文件名最前面,就无所谓了。