def _load_exif(self, image): if settings.exif: tags = set( _filter_tags(TAGS.values(), settings.exif.get('include'), settings.exif.get('exclude'))) tags.add('Orientation') # always need this for resize else: tags = TAGS.values() exif_data = {} exif = image._getexif() or {} for k, v in exif.items(): decoded = TAGS.get(k) if decoded in tags and not isinstance( v, IFDRational): # Filter complex data values exif_data[decoded] = v for k, v in exif_data.pop('GPSInfo', {}).items(): decoded = GPSTAGS.get(k, k) exif_data[decoded] = v self._exif = exif_data
def read_one_exif_tag(pil_image, tag): try: exif_key = TAGS.keys()[TAGS.values().index(tag)] except ValueError: return 'Invalid EXIF Tag' info_ = pil_image._getexif() if info_ is None: return None else: invalid_str = 'Invalid EXIF Key: exif_key=%r, tag=%r' % (exif_key, tag) exif_val = info_.get(exif_key, invalid_str) return exif_val
def read_one_exif_tag(pil_image, tag): try: exif_key = TAGS.keys()[TAGS.values().index(tag)] except ValueError: return 'Invalid EXIF Tag' info_ = pil_image._getexif() if info_ is None: return None else: invalid_str = 'Invalid EXIF Key: exif_key=%r, tag=%r' % (exif_key, tag) exif_val = info_.get(exif_key, invalid_str) return exif_val