As ever, mostly notes to myself.
I have a bunch of old images which don’t have any timestamp associated with them. This quick Python script will add a
DateTime EXIF metadata tag to an image.
This uses piexif which can be installed using
pip install piexif
This simple script reads a photo, adds a timestamp, then saves a copy of the new photo.
from PIL import Image from PIL.ExifTags import TAGS import piexif from datetime import datetime im = Image.open("test.jpg") exif_dict = piexif.load(im.info["exif"]) exif_dict["0th"][piexif.ImageIFD.DateTime]=datetime.strptime("2000/12/25 12:32","%Y/%m/%d %H:%M").strftime("%Y:%m:%d %H:%M:%S") exif_bytes = piexif.dump(exif_dict) im.save("new.jpg", "jpeg", exif=exif_bytes, quality="keep", optimize=True)
A point to note about the last line. By default, PIL saves JPGs with a quality of 75. By using
quality="keep" the original quality is preserved. The
optimize=True attempts to losslessly improve the image.
A word of warning – timestamps are stored in multiple EXIF locations. If your image already has a timestamp, it is possible that this script won’t change it.