OlegKl

Untitled

Oct 24th, 2019
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.13 KB | None | 0 0
  1. def image_optimizer(data):
  2.     """Optimize an image that has not been saved to a file."""
  3.  
  4.     if not data:
  5.         return data
  6.  
  7.     extension = data.name.split('.')[-1]
  8.  
  9.     extension = (
  10.         extension.upper()
  11.         if extension.lower() != 'jpg' else 'JPEG'
  12.     )
  13.  
  14.     if config.TINYPNG_KEY:
  15.         tinify.key = config.TINYPNG_KEY
  16.         buffer = tinify.from_buffer(data.file.read()).to_buffer()
  17.     else:
  18.         image = Image.open(data)
  19.         bytes_io = BytesIO()
  20.         image.save(bytes_io, format=extension, optimize=True)
  21.         buffer = bytes_io.getvalue()
  22.     data.seek(0)
  23.     data.file.write(buffer)
  24.     data.file.truncate()
  25.     return data
  26.  
  27.  
  28. class OptimizedImageField(ImageField):
  29.     """An ImageField that gets optimized on save() using tinyPNG."""
  30.  
  31.     def save_form_data(self, instance, data):
  32.         """Remove the OptimizedNotOptimized object on clearing the image."""
  33.         # Are we updating an image?
  34.         updating_image = True if data and getattr(instance, self.name) != data else False
  35.  
  36.         if updating_image:
  37.             data = image_optimizer(data)
  38.         super().save_form_data(instance, data)
Advertisement
Add Comment
Please, Sign In to add comment