aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/tools/exif.py
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/tools/exif.py')
-rw-r--r--mediagoblin/tools/exif.py38
1 files changed, 10 insertions, 28 deletions
diff --git a/mediagoblin/tools/exif.py b/mediagoblin/tools/exif.py
index ab3f77f0..15dffa79 100644
--- a/mediagoblin/tools/exif.py
+++ b/mediagoblin/tools/exif.py
@@ -50,7 +50,7 @@ def exif_fix_image_orientation(im, exif_tags):
Translate any EXIF orientation to raw orientation
Cons:
- - REDUCES IMAGE QUALITY by recompressig it
+ - REDUCES IMAGE QUALITY by recompressing it
Pros:
- Prevents neck pain
@@ -62,7 +62,7 @@ def exif_fix_image_orientation(im, exif_tags):
6: 270,
8: 90}
orientation = exif_tags['Image Orientation'].values[0]
- if orientation in rotation_map.keys():
+ if orientation in rotation_map:
im = im.rotate(
rotation_map[orientation])
@@ -73,16 +73,12 @@ def extract_exif(filename):
"""
Returns EXIF tags found in file at ``filename``
"""
- exif_tags = {}
-
try:
- image = open(filename)
- exif_tags = process_file(image, details=False)
+ with file(filename) as image:
+ return process_file(image, details=False)
except IOError:
raise BadMediaFail(_('Could not read the image file.'))
- return exif_tags
-
def clean_exif(exif):
'''
@@ -96,12 +92,8 @@ def clean_exif(exif):
'JPEGThumbnail',
'Thumbnail JPEGInterchangeFormat']
- clean_exif = {}
-
- for key, value in exif.items():
- if not key in disabled_tags:
- clean_exif[key] = _ifd_tag_to_dict(value)
- return clean_exif
+ return dict((key, _ifd_tag_to_dict(value)) for (key, value)
+ in exif.iteritems() if key not in disabled_tags)
def _ifd_tag_to_dict(tag):
@@ -122,13 +114,8 @@ def _ifd_tag_to_dict(tag):
data['printable'] = tag.printable.decode('utf8', 'replace')
if type(tag.values) == list:
- data['values'] = []
- for val in tag.values:
- if isinstance(val, Ratio):
- data['values'].append(
- _ratio_to_list(val))
- else:
- data['values'].append(val)
+ data['values'] = [_ratio_to_list(val) if isinstance(val, Ratio) else val
+ for val in tag.values]
else:
if isinstance(tag.values, str):
# Force UTF-8, so that it fits into the DB
@@ -144,12 +131,7 @@ def _ratio_to_list(ratio):
def get_useful(tags):
- useful = {}
- for key, tag in tags.items():
- if key in USEFUL_TAGS:
- useful[key] = tag
-
- return useful
+ return dict((key, tag) for (key, tag) in tags.iteritems() if key in USEFUL_TAGS)
def get_gps_data(tags):
@@ -166,7 +148,7 @@ def get_gps_data(tags):
'latitude': tags['GPS GPSLatitude'],
'longitude': tags['GPS GPSLongitude']}
- for key, dat in dms_data.items():
+ for key, dat in dms_data.iteritems():
gps_data[key] = (
lambda v:
float(v[0].num) / float(v[0].den) \