Image compression is minimizing the size of the current image size without reducing the quality of the image.
It helps to optimize the storage of server to add more image with goodest quality.
How to compress image in django python web framework?
To compress image in django web framework we need some libraries install into django project environment.
Setup
Create Python Virtual Environment
mkvirtualenv json_response_demo
Install Django
pip install django pillow
Create Django Project
django-admin startproject EmployeeData
Create Django App
django-admin startapp api
Register api app in django settings install apps.
# EmployeeData > EmployeeData > settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'api', ]
# models.py file in api direcotry
from django.db import models
def upload_location(instance, filename, **kwargs):
    file_path = 'movie_picture/{filename}'.format(filename=filename)
    return file_path
class Movie(models.Model): 
    title = models.CharField(max_length=32)
    content = models.TextField()
    year = models.IntegerField()
    picture = models.ImageField(
        upload_to=upload_location, null=False, blank=True)
    
    def save(self,force_insert=False, force_update=False, using=None,*args, **kwargs):
        if self.picture:
            image = self.picture
            if image.size > 0.3*1024*1024: #if size greater than 300kb then it will send to compress image function
                self.picture = compress_image(image)
        super(Movie, self).save(*args, **kwargs)
from django.core.files import File
from io import BytesIO
from PIL import Image
def compress_image(image):
    im = Image.open(image)
    if im.mode != 'RGB':
        im = im.convert('RGB')
    im_io = BytesIO()
    im.save(im_io, 'jpeg', quality=70,optimize=True)
    new_image = File(im_io, name=image.name)
    return new_image
Pillow library is used to perform operation of images in python.
BytesIO is used to read the image for changing the quality of image.
We have successfully created image compression in django rest framework in python language.