我收到了一位摄影师发来的一些照片。当我使用外置工具我发现摄影师相机的时区不正确。
Create Date : 2024:04:21 05:40:41-05:00
Date/Time Original : 2024:04:21 05:40:41-05:00
Modify Date : 2024:04:21 13:08:27+07:00
Date/Time Created : 2024:04:21 05:40:41-05:00
Digital Creation Date/Time : 2024:04:21 05:40:41-05:00
正确的时区是 UTC+7:00(印度支那时间 (ICT)),但几个 exif 字段错误地包含-05:00
。
日期和时间都是正确的。例如,创建日期应该是2024:04:21 05:40:41
印度支那时间 UTC+7:00。(我认为修改日期是摄影师使用照片编辑软件编辑照片的时间)。
如何使用 exiftool 来更正具有的字段的时区-5:00
?
另外,我想设置文件创建和修改日期以匹配 exif 创建日期。
以下是更完整的 exiftool 输出,希望它有帮助:
$ exiftool -time:all -G1 -a -s DSC00907.jpg
[System] FileModifyDate : 2024:04:21 05:40:41+07:00
[System] FileAccessDate : 2024:04:24 19:15:59+07:00
[System] FileInodeChangeDate : 2024:04:24 19:15:59+07:00
[IFD0] ModifyDate : 2024:04:21 13:08:27
[ExifIFD] DateTimeOriginal : 2024:04:21 05:40:41
[ExifIFD] CreateDate : 2024:04:21 05:40:41
[ExifIFD] OffsetTime : +07:00
[ExifIFD] OffsetTimeOriginal : -05:00
[ExifIFD] OffsetTimeDigitized : -05:00
[XMP-xmp] ModifyDate : 2024:04:21 13:08:27+07:00
[XMP-xmp] CreateDate : 2024:04:21 05:40:41-05:00
[XMP-xmp] MetadataDate : 2024:04:21 13:08:27+07:00
[XMP-photoshop] DateCreated : 2024:04:21 05:40:41-05:00
[XMP-xmpMM] HistoryWhen : 2024:04:21 13:08:27+07:00
[IPTC] DateCreated : 2024:04:21
[IPTC] TimeCreated : 05:40:41-05:00
[IPTC] DigitalCreationDate : 2024:04:21
[IPTC] DigitalCreationTime : 05:40:41-05:00
[ICC-header] ProfileDateTime : 1998:02:09 06:49:00
[Composite] SubSecCreateDate : 2024:04:21 05:40:41-05:00
[Composite] SubSecDateTimeOriginal : 2024:04:21 05:40:41-05:00
[Composite] SubSecModifyDate : 2024:04:21 13:08:27+07:00
[Composite] DateTimeCreated : 2024:04:21 05:40:41-05:00
[Composite] DigitalCreationDateTime : 2024:04:21 05:40:41-05:00
答案1
在上面的输出中,您可以完全忽略ProfileDateTime
、MetadataDate
和HistoryWhen
。第一个仅适用于 ICC_Profile 颜色数据,不应更改。另外两个是工作流标签,永远不应用来标记图像的日期。每当文件被修改时,这些标签都会自动更新,但这取决于所使用的程序。例如,Adobe 程序将始终更新这些标签,但许多不太专业的程序则不会。
复合组标签是 exiftool 动态创建的标签,用于方便在标签/组/文件之间复制数据。它们实际上并不存在于文件中。它们可以被忽略,因为它们会在读取的底层标签被更正时发生变化。
IFD0:ModifyDate
/ XMP-xmp:ModifyDate
/标签可以忽略,因为它们与/标签ExifIFD:OffsetTime
属于类似的类别。它们应该在修改图像时更改。如果缺少其他更重要的日期/时间标签,程序可能会使用这些标签来标记图像的日期,因此这取决于个人喜好。如果需要,可以按照以下概述的方式修复这些问题。MetadataDate
HistoryWhen
真正重要的标签是剩余的OffsetTime
标签,即DateTimeOriginal
、DateCreated
和 两个CreateDate
标签。以及程度较轻的DigitalCreationTime
/TimeCreated
标签。
要修复时区,exiftool 的换班时间能力。要从 移至-05:00
,+07:00
需要移位 +12 小时。基本格式为
-TAG+=+12:00
生成的命令如下
exiftool -OffsetTimeOriginal+=+12:00 -OffsetTimeDigitized+=+12:00 -CreateDate+=+12:00 -DateCreated+=+12:00 -DigitalCreationTime+=+12:00 -TimeCreated+=+12:00 /path/to/files/
如果需要,可以使用相同的格式将修改类型标签添加到此命令。
此命令创建备份文件。添加-overwrite_original
禁止创建备份文件。添加-r
递归到子目录中。添加-P
(-preserve
) 选项保存当前FileModifyDate
。
文件系统标签是唯一剩下的标签。这些标签以 UTC 格式存储,文件系统在提取时会将它们转换为本地时区。因此,它们将总是以当地时间显示,如果图像是在不同的时区拍摄的,则时间会有所不同。
Exiftool 无法编辑FileAccessDate
/FileInodeChangeDate
标签,并且没有理由尝试这样做,因为只要触碰所在的文件/目录,这些标签就会不断更新。
与上面的修改日期类似FileModifyDate
,但适用于以任何方式修改文件时,而不仅仅是图像。