Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/un1t/django-resized

Resizes image original to specified size. Compatible with sorl-thumbnail
https://github.com/un1t/django-resized

Last synced: about 5 hours ago
JSON representation

Resizes image original to specified size. Compatible with sorl-thumbnail

Awesome Lists containing this project

README

        

.. image:: https://github.com/un1t/django-resized/actions/workflows/python-app.yml/badge.svg
:target: https://github.com/un1t/django-resized/actions/workflows/python-app.yml

Resizes image origin to specified size. Compatible with sorl-thumbnail. Inherits from ImageField.

Features
========

- Tested on Django 3.2, 4.0, 4.1, 4.2, 5.0, 5.1

Installation
============

.. code-block:: bash

pip install django-resized

Configuration (optional)
========================

settings.py

.. code-block:: python

DJANGORESIZED_DEFAULT_SIZE = [1920, 1080]
DJANGORESIZED_DEFAULT_SCALE = 0.5
DJANGORESIZED_DEFAULT_QUALITY = 75
DJANGORESIZED_DEFAULT_KEEP_META = True
DJANGORESIZED_DEFAULT_FORCE_FORMAT = 'JPEG'
DJANGORESIZED_DEFAULT_FORMAT_EXTENSIONS = {'JPEG': ".jpg"}
DJANGORESIZED_DEFAULT_NORMALIZE_ROTATION = True

Usage
=====

models.py

.. code-block:: python

from django_resized import ResizedImageField

class MyModel(models.Model):
...
image1 = ResizedImageField(size=[500, 300], upload_to='whatever')
image2 = ResizedImageField(size=[100, 100], crop=['top', 'left'], upload_to='whatever')
image3 = ResizedImageField(size=[100, 150], crop=['middle', 'center'], upload_to='whatever')
image4 = ResizedImageField(scale=0.5, quality=75, upload_to='whatever')
image5 = ResizedImageField(size=None, upload_to='whatever', force_format='PNG')
image6 = ResizedImageField(size=[100, None], upload_to='whatever')

Options
-------

- **size** - max width and height, for example [640, 480]. If a dimension is None, it will resized using the other value and maintains the ratio of the image. If size is None, the original size of the image will be kept.
- **scale** - a float, if not None, which will rescale the image after the image has been resized.
- **crop** - resize and crop. ['top', 'left'] - top left corner, ['middle', 'center'] is center cropping, ['bottom', 'right'] - crop right bottom corner.
- **quality** - quality of resized image 0..100, -1 means default
- **keep_meta** - keep EXIF and other meta data, default True
- **force_format** - force the format of the resized image, available formats are the one supported by `pillow `_, default to None

How to run tests
================

.. code-block:: bash

pip install tox
tox