diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-08-31 20:20:03 +0200 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-08-31 20:20:03 +0200 |
| commit | 04a56cfca0e999a5af07545de51c84258d0c1288 (patch) | |
| tree | d35247416d559648dbabce2acd9a81d2dd9f8a58 /chimere/models.py | |
| parent | 741baf714a56ec15e38f42a5aef01868d3b80c6a (diff) | |
| parent | d768ed653a435c2ddd8fc0c1bfec72a0ec5e5a48 (diff) | |
| download | Chimère-04a56cfca0e999a5af07545de51c84258d0c1288.tar.bz2 Chimère-04a56cfca0e999a5af07545de51c84258d0c1288.zip | |
Merge branch 'master' into saclay
Conflicts:
chimere/static/chimere/js/utils.js
Diffstat (limited to 'chimere/models.py')
| -rw-r--r-- | chimere/models.py | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/chimere/models.py b/chimere/models.py index 4d66278..e98c97b 100644 --- a/chimere/models.py +++ b/chimere/models.py @@ -20,7 +20,7 @@ """ Models description """ -import os, datetime, re, string +import os, datetime, pyexiv2, re, string import simplejson as json from lxml import etree from PIL import Image @@ -609,11 +609,44 @@ def scale_image(max_x, pair): new_y = (float(max_x) / x) * y return (int(max_x), int(new_y)) + +IMAGE_EXIF_ORIENTATION_MAP = { + 1: 0, + 8: 2, + 3: 3, + 6: 4, +} + +PYEXIV2_OLD_API = not hasattr(pyexiv2, 'ImageMetadata') + def picturefile_post_save(sender, **kwargs): if not kwargs['instance']: return picturefile = kwargs['instance'] + if kwargs['created']: + filename = picturefile.picture.path + metadata = None + if PYEXIV2_OLD_API: + metadata = pyexiv2.Image(filename) + metadata.readMetadata() + else: + metadata = pyexiv2.ImageMetadata(filename) + metadata.read() + orientation = metadata['Exif.Image.Orientation'].value \ + if 'Exif.Image.Orientation' in metadata else None + print "orientation", orientation + if orientation and orientation in IMAGE_EXIF_ORIENTATION_MAP \ + and orientation > 1: + metadata['Exif.Image.Orientation'] = 1 + if PYEXIV2_OLD_API: + metadata.writeMetadata() + else: + metadata.write() + im = Image.open(filename) + im = im.transpose(IMAGE_EXIF_ORIENTATION_MAP[orientation]) + im.save(filename) + if not picturefile.thumbnailfile: file = picturefile.picture # defining the filename and the thumbnail filename @@ -650,7 +683,7 @@ def picturefile_post_save(sender, **kwargs): picturefile.thumbnailfile = short_name picturefile.save() - if not kwargs['instance'] or not kwargs['created']: + if not kwargs['created']: return pfs = PictureFile.objects.filter(marker=picturefile.marker).exclude( pk=picturefile.pk).order_by('order') |
