Je peux obtenir les données EXIF d'une image en utilisant PIL, mais comment puis-je obtenir la date et l'heure auxquelles la photo a été prise?
J'ai finalement trouvé la réponse, la balise dont j'avais besoin était 6867 :
from PIL import Image
def get_date_taken(path):
return Image.open(path)._getexif()[36867]
J'aime utiliser exif-py
parce que c'est pur-python, ne nécessite pas de compilation/installation et fonctionne avec les deux python 2.x et 3.x, ce qui le rend idéal pour le regroupement avec de petits portables python applications.
Lien: https://github.com/ianare/exif-py
Exemple pour obtenir la date et l'heure de prise d'une photo:
import exifread
with open('image.jpg', 'rb') as fh:
tags = exifread.process_file(fh, stop_tag="EXIF DateTimeOriginal")
dateTaken = tags["EXIF DateTimeOriginal"]
return dateTaken
try:
import PIL
import PIL.Image as PILimage
from PIL import ImageDraw, ImageFont, ImageEnhance
from PIL.ExifTags import TAGS, GPSTAGS
except ImportError as err:
exit(err)
class Worker(object):
def __init__(self, img):
self.img = img
self.get_exif_data()
self.date =self.get_date_time()
super(Worker, self).__init__()
def get_exif_data(self):
exif_data = {}
info = self.img._getexif()
if info:
for tag, value in info.items():
decoded = TAGS.get(tag, tag)
if decoded == "GPSInfo":
gps_data = {}
for t in value:
sub_decoded = GPSTAGS.get(t, t)
gps_data[sub_decoded] = value[t]
exif_data[decoded] = gps_data
else:
exif_data[decoded] = value
self.exif_data = exif_data
# return exif_data
def get_date_time(self):
if 'DateTime' in self.exif_data:
date_and_time = self.exif_data['DateTime']
return date_and_time
def main():
date = image.date
print(date)
if __name__ == '__main__':
try:
img = PILimage.open(path + filename)
image = Worker(img)
date = image.date
print(date)
except Exception as e:
print(e)
Du dict retourné par _getexif () en utilisant la clé 'DateTimeOriginal'?