33

I ran into big problem yesterday night.

I took out my old digital camera, and started using it without setting current date and time.

All photos clicked now have date as Jan 01, 2009

I want to change the date and time (and other EXIF image meta-data) of multiple images.

Please recommend some software which can process multiple images in single click/go.

3 Answers 3

37

As you already have a GUI solution, I thought I would mention that there are also several ways of changing EXIF data on the command-line; two useful tools are exiftool and jhead, which can be installed with this command:

sudo apt-get install libimage-exiftool-perl jhead

With both of these tools you can operate upon multiple files at once, but you may want to back your files up before you start manipulating the exif data.

jhead

To change the time and date EXIF data on a number of files 'in a single click', you could open terminal and do cd to the folder with the pictures and run:

jhead -ts2012:10:29-10:28:03 *.jpg

The -ts switch allows you to specify the date and time required and write it to the exif header all in one go: the format specified here is YYYY:MM:DD-HH:MM:SS.

If you just wanted to change the date without specifying the time, you would use instead:

jhead -ds2012:10:29 *.jpg

You could also do it just for one some pictures taken with a particular camera if you specified, for example, -model "D70", but that option must come first in the processing, and must be something like "D70", "S100" and not "Nikon D70". Look at the exif readout from your pictures to get the correct model number.

jhead -model "D70" -ts2012:10:29-10:28:03 *.jpg

For more information, see man jhead.

exiftool

This utility has more options than jhead and is very comprehensive, as noted at the official site. There is a graphical frontend for exiftool in development, but it is in the early stages at the moment, but looks promising.

The date and time shifting options, and which formats can be used are quite extensive, as detailed here in this useful pdf. As with jhead, you can decide to change time and date, or just date. This example changes both date and time:

exiftool -AllDates="2012:03:14 12:25:00" *.jpg

The example above just sets a particular value for the date and times of the pictures; if you wanted to just shift them all by a certain time index, such as the three years forward, you could use:

exiftool -AllDates+="3:0:0 0" *.jpg

The shifting feature can be very useful if, as has happened to you, your pictures are all suddenly marked 2009, even though they were taken in 2012. Make sure you use a plus or minus sign before the equals (as in -AllDates-= or -AllDates+=), depending on what you want to achieve when you assign your required time index, or the resulting EXIF data will not be as expected.

exiftool will create a backup of the original before editing the EXIF data adding original at the end of the filename.

exiftool supports more image types than jhead which only works for JPEGs.

For more information, see man exiftool.

4
  • 1
    +1, Outstanding answer Mik. This is much more flexible than just using Shotwell. Jan 6, 2013 at 23:25
  • I stumbled on this answer because I was looking at how to add EXIF data to jpg images that didn't have it in the first place. For that, I found that I needed jhead -mkexif -ts<date>.
    – Ian
    Sep 28, 2014 at 13:43
  • jhead was just great to use.
    – Harald
    May 25, 2015 at 15:23
  • 1. Note that unfortunately the EXIF standard doesn't include timezone info. 2. Instead of asterisk you could use brace expansion: DSCN{120..345}.jpg. 3. To change file timestamp using other as reference use touch -r ~/path/reference.jpg *.jpg Jan 7, 2019 at 4:54
22

Changing the date and time are easy in Shotwell. Select the photos you want to adjust and go to the menu like this:

shotwell menu

Select Photos/Adjust date and time. That brings up a menu like this:

time date adjust

If all the photos are off by the same amount, you can do them all in one go. If you used more than one camera and they were off by different amounts, you have to divide them and do each batch separately.

Shotwell's help page explaining this is here.

2
  • This is the right way to do this with date and time. Thank you very much for sharing. Mar 7, 2012 at 0:14
  • Shotwell top menu options are not showing up here. Is that a bug of Xenial Xerus? May 23, 2016 at 17:45
3

This question asked for EXIF, but image metadata has at least three standards that can be attached to images, EXIF, XMP, and IPTC. Many photo programs will write to all of these formats, but not all, so it's important to check all of them.

I've found that exif is a good tool, but that exiv2 is better. Compare exif:

↪ exif 00000020.jpg 
EXIF tags in '00000020.jpg' ('Intel' byte order):
--------------------+----------------------------------------------------------
Tag                 |Value
--------------------+----------------------------------------------------------
Software            |Shotwell 0.22.0
Date and Time       |1905:01:01 00:00:01
X-Resolution        |72
Y-Resolution        |72
Resolution Unit     |Inch
Date and Time (Origi|1905:01:01 00:00:01
Date and Time (Digit|1905:01:01 00:00:01
User Comment        |Dad
Exif Version        |Exif Version 2.1
FlashPixVersion     |FlashPix Version 1.0
Color Space         |Internal error (unknown value 65535)
--------------------+----------------------------------------------------------

To exiv2:

↪ exiv2 -p a 00000020.jpg 
Exif.Image.Software                          Ascii      16  Shotwell 0.22.0
Exif.Image.DateTime                          Ascii      20  1905:01:01 00:00:01
Exif.Image.ExifTag                           Long        1  86
Exif.Photo.DateTimeOriginal                  Ascii      20  1905:01:01 00:00:01
Exif.Photo.DateTimeDigitized                 Ascii      20  1905:01:01 00:00:01
Exif.Photo.UserComment                       Undefined  11  Dad
Iptc.Application2.Program                    String      8  Shotwell
Iptc.Application2.ProgramVersion             String      6  0.22.0
Iptc.Application2.Keywords                   String      8  2015scan
Iptc.Application2.Keywords                   String     11  Lissner-Jay
Iptc.Application2.Keywords                   String      6  People
Xmp.exif.DateTimeOriginal                    XmpText    20  1905:01:01 08:00:01
Xmp.exif.DateTimeDigitized                   XmpText    20  1905-01-01T08:00:01Z
Xmp.xmp.CreateDate                           XmpText    20  1905-01-01T08:00:01Z
Xmp.dc.subject                               XmpBag      3  2015scan, Lissner-Jay, People
Xmp.digiKam.TagsList                         XmpSeq      2  People, People/Lissner-Jay
Xmp.MicrosoftPhoto.LastKeywordXMP            XmpBag      2  People, People/Lissner-Jay

The big difference here being that the keywords in XMP and IPTC aren't in EXIF at all and so if I only looked there, I'd think it didn't have keywords.

I gave the command exiv2 -p a my-image.jpg because that displays all three forms of metadata. Leaving out -p a will just show you the EXIF data.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .