Как получить изображение разных размеров в Django?

Использую библиотку Pil
from django.db import models
from django.contrib.auth.models import (
    BaseUserManager, AbstractBaseUser
)
from PIL import Image

class User(AbstractBaseUser):
    logo = models.ImageField(upload_to='logo/', verbose_name="Логотип компании", null=True)
    def save(self):
        if not self.id and not self.logo:
            return

        super(User, self).save()
        image = Image.open(self.logo)
        image.thumbnail((250,150), Image.ANTIALIAS)
        image.save(self.logo.path+'thumbnail_200_200_aa.jpg', 'JPEG', quality=75)


Выше я перезаписываю загруженное изображение, а мне нужно сделать в дополнение к оригиналу сделать еще две вариации imageresize и imagethumbnail.

Делается это все примерно так:
def get_image_resize(self):
    image = Image.open(self.logo)
    imageresize = image.resize((500,500), Image.ANTIALIAS)
    imageresize.save('resize_500_500_aa.jpg', 'JPEG', quality=75)
   #Как  в шаблоне  получить ссылку на сохраненное изображение?
	 
def get_image_thumbnail(self):
    image = Image.open(self.logo)
    imagethumbnail = image.thumbnail((200,200), Image.ANTIALIAS)
    imagethumbnail.save('thumbnail_200_200_aa.jpg', 'JPEG', quality=75)
   #Как  в шаблоне  получить ссылку на сохраненное изображение?
  • Вопрос задан
  • 1899 просмотров
Решения вопроса 1
@deliro
Есть замечательная библиотека imagekit, которая позволяет генерировать превьюхи либо налету, либо хранить базе. И то, и другое делается в одну строку.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Можно сразу это делать в шаблоне воспользовавшись sorl-thumbnail
модель
from sorl.thumbnail import ImageField
class MyModel(models.Model):
    image = models.ImageField(upload_to='/dev/null')


вывод в шаблоне с заданными размерами
{% thumbnail item.image "100x100" crop="center" as im %}
    <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы