We define a general class called Photo; it contains details about itself and provides functions to access Exchangeable Image File Format (EXIF) information and generate a preview image.
In the __init__() function, we set values for our class variables and call self.initImage(), which will open the image using the Image() function from the PIL. We then call self.initExif() and self.initDates() and set a flag to indicate whether the file was valid or not. If not valid, the Image() function would raise an IOError exception.
The initExif() function uses PIL to read the EXIF data from the img object, as shown in the following code snippet:
self.exif_info={ ExifTags.TAGS[id]:y for id,y in image._getexif().items() if id in ExifTags.TAGS ...