How it works...

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 ...

Get Getting Started with Python for the Internet of Things now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.