I use F-Spot to manage my images. For one set of images, the dates somehow got messed up and they all are marked as September 1st 2007. I'd like to change the date taken information to a different date. How can I do this?
jhead is capable of doing this.
Let's say you know a certain picture was taken on
2017-04-19 16:20 but the current date is showing as
2007-09-01 00:15, you can adjust all
jpg pictures in a folder to the correct time by doing:
jhead -da2017:04:19/16:20-2007:09:01/00:15 *.jpg
Here is an extract from the manual:
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
An even more powerful option is ExifTool.
exiv2 is a command line tool to manipulate exif data. Supported image formats are JPEG, Canon CRW and Canon THM. PNG is read-only.
If you want to set the file date to the exif date you can use exiv2 with the following option.
-t Set the file timestamp according to the Exif create timestamp in addition to renaming the file (overrides -k). This option is only used with the ’rename’ action.
Here is what I needed
To add constant offset to old date
exiv2 ad -a -3:17 *.JPG
To rename into
exiv2 mv *.JPG
Other formats and options are specified in man pages.
I use a following script to give images some successive dates. Hope it helps. It expects a directory with the images to be redated as an argument i .e
#!/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
Exiftool: slow on the command line. (It's written in Perl, so draw your own conclusions there.)
Exifer creates an empty tag or two in files, and not just in the EXIF block. It will also remove some tags written by other tools. As I haven't used it in over a year, I can't be specific as to which ones.
FastStone's stuff, imx, is too slow to keep installed for more than a day or two.
My vote is for Hr. Weinzerl's suggestion: Exiv2.
Picasa 3, a free photo management tool from Google, will do this and it's nice and quick.
In Picasa select View menu > Properties to display the Properties pane.
Select the folder containing the photos and they'll appear as a collection of thumbnails.
Select the thumbnails you want to update. To decide which to update as a batch, you can either set them all to the same new date-time or you can change the first one and all the rest will be time-shifted by the same amount.
In the Properties pane right click on the Camera Date field then select Adjust Date and Time... from the context menu. The Adjust Photo Date dialog will open showing the current Camera Date for the first photo.
Edit the Camera Date and Time as required. If you just want to change a.m. to p.m., or vice versa, just select the "a.m." part of the time and type "a" or "p" as appropriate. No need to type the whole "a.m." or "p.m." thing.
There are two options, if you selected more than one thumbnail for updating: "Adjust all photo dates by the same amount" or "Set all photos to the same date and time". Choose whichever is appropriate. Then click OK.
The EXIF dates of all the selected photos will be updated.
For anyone using Windows 10: making mass changes to certain meta data is built into File Explorer.
- Select the photos you'd like to update in File Explorer
- Right-click on a selected photo and open Properties
- Assuming you have only photos selected, the Details tab will allow you to make changes
This only works for assigning the same value (e.g. Date Taken) to each photo you selected.