如何批量更改EXIF数据中的日期信息?


30

我使用F-Spot管理图像。对于一组图像,日期以某种方式弄乱了,它们都标记为2007年9月1日。我想将日期信息更改为其他日期。我怎样才能做到这一点?

Answers:


25

jhead可以做到这一点。

假设您知道某张照片已拍摄,2017-04-19 16:20但当前日期显示为2007-09-01 00:15,则可以jpg通过执行以下操作将文件夹中的所有照片调整为正确的时间:

jhead -da2017:04:19/16:20-2007:09:01/00:15 *.jpg

以下是手册的摘录:

DATE / TIME MANIPULATION:
   -ft        Set file modification time to Exif time
   -dsft      Set Exif time to file modification time
   -n[format-string]
             Rename files according to date.  Uses exif date if present, file
             date otherwise.  If the optional format-string is not supplied,
             the format is mmdd-hhmmss.  If a format-string is given, it is
             is passed to the 'strftime' function for formatting
             In addition to strftime format codes:
             '%f' as part of the string will include the original file name
             '%i' will include a sequence number, starting from 1. You can
             You can specify '%03i' for example to get leading zeros.
             This feature is useful for ordering files from multiple digicams to
             sequence of taking.  Only renames files whose names are mostly
             numerical (as assigned by digicam)
             The '.jpg' is automatically added to the end of the name.  If the
             destination name already exists, a letter or digit is added to
             the end of the name to make it unique.
  -nf[format-string]
             Same as -n, but rename regardless of original name
  -a         (Windows only) Rename files with same name but different extension
             Use together with -n to rename .AVI files from exif in .THM files
             for example
  -ta<+|->h[:mm[:ss]]
             Adjust time by h:mm backwards or forwards.  Useful when having
             taken pictures with the wrong time set on the camera, such as when
             traveling across time zones or DST changes. Dates can be adjusted
             by offsetting by 24 hours or more.  For large date adjustments,
             use the -da option
  -da<date>-<date>
             Adjust date by large amounts.  This is used to fix photos from
             cameras where the date got set back to the default camera date
             by accident or battery removal.
             To deal with different months and years having different numbers of
             days, a simple date-month-year offset would result in unexpected
             results.  Instead, the difference is specified as desired date
             minus original date.  Date is specified as yyyy:mm:dd or as date
             and time in the format yyyy:mm:dd/hh:mm:ss
  -ts<time>  Set the Exif internal time to <time>.  <time> is in the format
             yyyy:mm:dd-hh:mm:ss
  -ds<date>  Set the Exif internal date.  <date> is in the format YYYY:MM:DD
             or YYYY:MM or YYYY

一个更强大的选项是ExifTool


最近使用jhead来校正和同步来自家庭度假的数百张照片上的日期/时间戳,其中三个摄像机都错误地设置了数据和时间。易于使用,非常有用。
将间

Jhead似乎不支持RAW文件类型,但ExifTool支持(例如Canon CR2,Nikon NEF,Sony ARW)。对于那些只使用RAW或同时使用RAW和JPEG拍摄的人来说,这是一个好消息。
萨米尔2014年

它与Windows 10兼容吗?
XPMai18年

@XPMai仍可在Windows 10上使用-我最终出于自己的目的使用了-ds。
alexander7567


3

exiv2是用于处理exif数据的命令行工具。支持的图像格式为JPEG,Canon CRW和Canon THM。PNG是只读的。

如果要将文件日期设置为exif日期,则可以将exiv2与以下选项一起使用。

-t除了重命名文件(覆盖-k)之外,还应根据Exif创建时间戳设置文件时间戳。此选项仅与“重命名”操作一起使用。


谢谢!exiv2易于使用且快速。-T允许设置文件时间戳而无需重命名:)
orzechow


2

这是我需要的

向旧日期添加恒定偏移量

exiv2 ad -a -3:17 *.JPG

重命名为 %Y%m%d_%H%M%S

exiv2 mv *.JPG

其他格式和选项在手册页中指定。


1

您可以尝试使用此免费工具:Exifer


1
@RandolphWest请仅在实际有意义的情况下留下评论链接。尽管此答案并不完美,但可以通过单击链接轻松确定其他所有内容。如果链接页面发生任何重大变化,此处可能包含的所有其他内容将无济于事,因为该软件将不再可供下载。实际上,包含太多详细信息(例如完整的功能列表)仅意味着如果链接的软件发生更改,答案很快就会过时。
丹尼尔·贝克

@DanielBeck答案中的链接不再引向应有的事实,这是为什么仅链接的答案很糟糕的完美示例。
拉斐尔

@Raphael请从第三句话开始重新阅读我的评论。在此无法内联的任何内容都无法解决此问题。
丹尼尔·贝克

1

我使用以下脚本为图像提供一些连续的日期。希望能帮助到你。它期望将包含图像的目录重新命名为参数,即script directory_with_images

#!/bin/bash
HOUR=12
MINUTE=0
DATE=2004:06:20
for file in "$1"/*;
do 
    exiv2 -v -M"set  Exif.Image.DateTime $DATE $(printf %02d $HOUR):$(printf %02d $MINUTE):00" "$file"
    exiv2 -v -M"set  Exif.Photo.DateTimeDigitized $DATE $(printf %02d $HOUR):$(printf %02d $MINUTE):00" "$file"
    exiv2 -v -M"set  Exif.Photo.DateTimeOriginal $DATE $(printf %02d $HOUR):$(printf %02d $MINUTE):00" "$file"
    #sets file timestamp (i.e. filesystem metadata, not image metadata) as well
    exiv2 -v -T "$file"
    if [ $MINUTE = 59 ]; then
        HOUR=$((HOUR + 1))
        MINUTE=0
    else
        MINUTE=$((MINUTE + 1))
    fi
    # this would rename the file as well
    #new_path=`pwd`/new_filename$(printf %02d $HOUR)$(printf %02d $MINUTE).jpg
    #cp "$file" "$new_path"
done

0

iPhoto和Aperture均具有时移选项,通常在新时区或时钟错误时。它可以保留未编辑的文件(仅更新应用程序的数据库)或编辑文件。显然,F-Spot需要借用这一点。


0

Exiftool:在命令行上运行缓慢。(它是用Perl编写的,因此请在此处得出您自己的结论。)

Exifer不仅在EXIF块中在文件中创建一个或两个空标签。它还将删除其他工具编写的一些标签。由于我已经使用了一年多,因此我无法具体说明哪个。

FastStone的东西imx太慢,无法安装一两天以上。

我的票是给HR的。魏因策尔的建议:Exiv2。

百事通


0

Picasa 3是Google提供的免费照片管理工具,它可以做到这一点,并且非常好且快捷。

在Picasa中,选择“查看”菜单>“属性”以显示“属性”窗格。

选择包含照片的文件夹,它们将显示为缩略图的集合。

选择您要更新的缩略图。要决定要批量更新,可以将它们全部设置为相同的新日期时间,也可以更改第一个日期时间,其余所有时间将以相同的时间偏移。

在“属性”窗格中,右键单击“相机日期”字段,然后从上下文菜单中选择“调整日期和时间...”。“调整照片日期”对话框将打开,显示第一张照片的当前相机日期。

根据需要编辑相机日期和时间。如果只想将上午更改为pm,反之亦然,只需选择时间中的“上午”部分,然后根据需要键入“ a”或“ p”即可。无需键入整个“ am”或“ pm”。

如果选择了多个缩略图进行更新,则有两个选项:“按相同数量调整所有照片日期”或“将所有照片设置为相同的日期和时间”。选择适当的一个。然后单击确定。

所有选定照片的EXIF日期将被更新。


请参阅@ user28515的早期答案,其中也建议使用Picasa;可悲的是它不再可用。
JohnC '18年

尽管Google不再开发Picasa,并且他们已经从其网站上删除了安装程序,但仍然可以下载最新版本的v3.9。谷歌搜索“下载picasa 3.9”将带来很多成功。如果您不愿从随机站点下载,则仍可通过Internet Archive Wayback Machine获得正式的Google下载。欲了解更多信息请看这里: sites.google.com/site/picasaresources/Home/Picasa-FAQ/picasa/...
SimonTewsi

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.