Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def image_optimizer(data):
- """Optimize an image that has not been saved to a file."""
- if not data:
- return data
- extension = data.name.split('.')[-1]
- extension = (
- extension.upper()
- if extension.lower() != 'jpg' else 'JPEG'
- )
- if config.TINYPNG_KEY:
- tinify.key = config.TINYPNG_KEY
- buffer = tinify.from_buffer(data.file.read()).to_buffer()
- else:
- image = Image.open(data)
- bytes_io = BytesIO()
- image.save(bytes_io, format=extension, optimize=True)
- buffer = bytes_io.getvalue()
- data.seek(0)
- data.file.write(buffer)
- data.file.truncate()
- return data
- class OptimizedImageField(ImageField):
- """An ImageField that gets optimized on save() using tinyPNG."""
- def save_form_data(self, instance, data):
- """Remove the OptimizedNotOptimized object on clearing the image."""
- # Are we updating an image?
- updating_image = True if data and getattr(instance, self.name) != data else False
- if updating_image:
- data = image_optimizer(data)
- super().save_form_data(instance, data)
Advertisement
Add Comment
Please, Sign In to add comment