diff options
Diffstat (limited to 'mediagoblin/tools/exif.py')
-rw-r--r-- | mediagoblin/tools/exif.py | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/mediagoblin/tools/exif.py b/mediagoblin/tools/exif.py index fafd987d..2215fb0c 100644 --- a/mediagoblin/tools/exif.py +++ b/mediagoblin/tools/exif.py @@ -19,6 +19,11 @@ import six from exifread import process_file from exifread.utils import Ratio +try: + from PIL import Image +except ImportError: + import Image + from mediagoblin.processing import BadMediaFail from mediagoblin.tools.translate import pass_to_ugettext as _ @@ -61,12 +66,12 @@ def exif_fix_image_orientation(im, exif_tags): # Rotate image if 'Image Orientation' in exif_tags: rotation_map = { - 3: 180, - 6: 270, - 8: 90} + 3: Image.ROTATE_180, + 6: Image.ROTATE_270, + 8: Image.ROTATE_90} orientation = exif_tags['Image Orientation'].values[0] if orientation in rotation_map: - im = im.rotate( + im = im.transpose( rotation_map[orientation]) return im @@ -175,18 +180,14 @@ def get_gps_data(tags): pass try: - gps_data['direction'] = ( - lambda d: - float(d.num) / float(d.den) - )(tags['GPS GPSImgDirection'].values[0]) + direction = tags['GPS GPSImgDirection'].values[0] + gps_data['direction'] = safe_gps_ratio_divide(direction) except KeyError: pass try: - gps_data['altitude'] = ( - lambda a: - float(a.num) / float(a.den) - )(tags['GPS GPSAltitude'].values[0]) + altitude = tags['GPS GPSAltitude'].values[0] + gps_data['altitude'] = safe_gps_ratio_divide(altitude) except KeyError: pass |