django-imagekit/imagekit/utils.py

52 lines
1.1 KiB
Python
Raw Normal View History

2011-10-20 03:12:47 +00:00
import tempfile
import types
2009-01-08 21:11:15 +00:00
from django.utils.functional import wraps
2011-10-20 03:12:47 +00:00
from imagekit.lib import Image
2009-01-08 20:04:20 +00:00
2011-10-10 17:13:47 +00:00
2009-01-08 20:04:20 +00:00
def img_to_fobj(img, format, **kwargs):
tmp = tempfile.TemporaryFile()
2011-10-10 17:13:47 +00:00
# Preserve transparency if the image is in Pallette (P) mode.
if img.mode == 'P':
kwargs['transparency'] = len(img.split()[-1].getcolors())
else:
img.convert('RGB')
2011-10-10 17:13:47 +00:00
img.save(tmp, format, **kwargs)
2009-01-08 20:04:20 +00:00
tmp.seek(0)
2009-01-08 21:11:15 +00:00
return tmp
2011-09-22 00:12:49 +00:00
def get_spec_files(instance):
try:
ik = getattr(instance, '_ik')
except AttributeError:
return []
else:
return [getattr(instance, n) for n in ik.spec_file_names]
def open_image(target):
img = Image.open(target)
img.copy = types.MethodType(_wrap_copy(img.copy), img, img.__class__)
return img
def _wrap_copy(f):
@wraps(f)
def copy(self):
img = f()
try:
img.app = self.app
except AttributeError:
pass
try:
img._getexif = self._getexif
except AttributeError:
pass
return img
return copy