diff options
author | Christopher Allan Webber <cwebber@dustycloud.org> | 2015-04-27 17:26:59 -0500 |
---|---|---|
committer | Christopher Allan Webber <cwebber@dustycloud.org> | 2015-04-27 17:26:59 -0500 |
commit | fd4ddeb14ed0f7548158680179df9f5a40902599 (patch) | |
tree | 76400f326f91d59232839e8dd1d7078f2217f5ba | |
parent | ab62a7c0d2fe227902b13b849a569bd5ef542f75 (diff) | |
download | mediagoblin-fd4ddeb14ed0f7548158680179df9f5a40902599.tar.lz mediagoblin-fd4ddeb14ed0f7548158680179df9f5a40902599.tar.xz mediagoblin-fd4ddeb14ed0f7548158680179df9f5a40902599.zip |
#5314 Prevent ZeroDivisionError in exif.py
-rw-r--r-- | mediagoblin/tools/exif.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/mediagoblin/tools/exif.py b/mediagoblin/tools/exif.py index ec83f43c..fafd987d 100644 --- a/mediagoblin/tools/exif.py +++ b/mediagoblin/tools/exif.py @@ -142,6 +142,11 @@ def get_gps_data(tags): """ Processes EXIF data returned by EXIF.py """ + def safe_gps_ratio_divide(ratio): + if ratio.den == 0: + return 0.0 + return float(ratio.num) / float(ratio.den) + gps_data = {} if not 'Image GPSInfo' in tags: @@ -155,9 +160,9 @@ def get_gps_data(tags): for key, dat in six.iteritems(dms_data): gps_data[key] = ( lambda v: - float(v[0].num) / float(v[0].den) \ - + (float(v[1].num) / float(v[1].den) / 60) \ - + (float(v[2].num) / float(v[2].den) / (60 * 60)) + safe_gps_ratio_divide(v[0]) \ + + (safe_gps_ratio_divide(v[1]) / 60) \ + + (safe_gps_ratio_divide(v[2]) / (60 * 60)) )(dat.values) if tags['GPS GPSLatitudeRef'].values == 'S': |