A Django middleware and utility for optimizing uploaded images by converting them to WebP with configurable width, height, and quality settings.
✔ Automatic optimization via middleware
✔ Manual optimization via utility function
✔ Supports per-request overrides
✔ Configurable defaults via settings.py
pip install django-optimize-imageAdd the middleware:
MIDDLEWARE = [
# other middleware...
"optimizer_middleware.middleware.ImageOptimizationMiddleware",
]Set global defaults in settings.py:
# Default image optimization settings
IMAGE_OPTIMIZER_WIDTH = 800 # Resize width
IMAGE_OPTIMIZER_HEIGHT = None # Keep aspect ratio
IMAGE_OPTIMIZER_QUALITY = 80 # WebP qualityBy default, images are resized to 800px width while maintaining aspect ratio and optimized to 80% quality.
Once added to MIDDLEWARE, the optimizer automatically processes all uploaded images in POST, PUT, and PATCH requests.
✅ Converts images to WebP
✅ Resizes based on settings.py
Override optimization settings dynamically in a view using request.META:
def upload_view(request):
request.META["IMAGE_OPTIMIZER_WIDTH"] = 600
request.META["IMAGE_OPTIMIZER_QUALITY"] = 90
return some_responseUse the function anywhere in your code (views, forms, serializers, etc.).
from optimizer_middleware.utils import optimize_image
optimized_image = optimize_image(image_file, width=500, quality=85)MIT License. Free to use and modify. 🚀
Use this guide Contribution