示例#1
0
    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
示例#2
0
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
示例#3
0
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