Skip to content

Instantly share code, notes, and snippets.

@marojenka
Created November 15, 2016 18:12
Show Gist options
  • Save marojenka/722a1dc674490a514cfbbe5ee449cc79 to your computer and use it in GitHub Desktop.
Save marojenka/722a1dc674490a514cfbbe5ee449cc79 to your computer and use it in GitHub Desktop.
from io import BytesIO
from PIL import Image, ImageOps
from django.core.files.base import ContentFile
from stdimage.models import StdImageField, StdImageFieldFile
class StdRescaledImageFieldFile(StdImageFieldFile):
def save(self, name, content, save=True):
img = Image.open(content)
file_format = img.format
img.thumbnail(self.field.image_size)
with BytesIO() as file_buffer:
img.save(file_buffer, file_format)
content = ContentFile(file_buffer.getvalue())
super(StdRescaledImageFieldFile, self).save(name, content, save)
class StdRescaledImageField_(StdImageField):
def __init__(self, rescale_image_down_to = None, *args, **kwargs):
super(StdRescaledImageField, self).__init__(*args, **kwargs)
if rescale_image_down_to is not None:
self.attr_class = StdRescaledImageFieldFile
self.image_size = rescale_image_down_to
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment