Модификация изображения Django, из одного поля изображения в другое - PullRequest
0 голосов
/ 30 июля 2011

У меня есть поле изображения в модели.Мне нужно сделать две копии (с измененным размером) этого изображения в два других поля (thumb_big и thumb_small).Ширина Thumb_big будет 225 пикселей, высота может быть любой.и thumb_small - 65x50 пикселей.

Я искал, но, кажется, ничто не вписывается в мою проблему.Я установил PIL.Пробовал django-imagekit, некоторые другие сниппеты.

Если вам известна какая-либо ссылка, которая также будет великолепна, кстати, я новичок в Django, но вы уже предполагали, что да,

вот моя модель

class Photo(models.Model):
    title = models.CharField(max_length=500)
    pub_date = models.DateField(auto_now_add=True)
    mod_date = models.DateField(auto_now=True)
    slug_name = models.SlugField(max_length=500)
    image = models.ImageField(upload_to='interview', blank=True)
    thumb_big = models.ImageField(upload_to= 'interview/thumbs_big', blank=True)
    thumb_small = models.ImageField(upload_to= 'interview/thumbs_small', blank=True)
    category = models.CharField(max_length=200, blank=True)
    details = models.TextField()

    def __unicode__(self):
        return self.title

1 Ответ

1 голос
/ 30 июля 2011

Я не совсем уверен, зачем вам нужно хранить пути к миниатюрам в базе данных.Есть несколько приложений для эскизов Django.Два из моих любимых:

Оба используют шаблонтеги для создания миниатюр на лету и отображения их в шаблонах django.

Они также поставляются с настраиваемыми полями базы данных для упрощения управления миниатюрами: http://thumbnail.sorl.net/examples.html#model-examples http://packages.python.org/easy-thumbnails/usage.html#models

Если вы действительнонеобходимо сохранить пути к вашим эскизам в вашей модели, вы можете сгенерировать оба эскиза в представлении загрузки изображений, а затем назначить результирующие пути к файлам для соответствующих полей базы данных.С легкой миниатюрой это будет выглядеть так:

photo = form.save()
from easy_thumbnails.files import get_thumbnailer
thumbnailer = get_thumbnailer(photo.image)
thumb = thumbnailer.get_thumbnail({'size': (100, 100)})
photo.thumb_big = thumb.name
photo.save()
...