Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 12, 2009 18:37:30

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Upload файла и url к нему

Здравствуйте.

При апплоаде файла если использовать такую схему:

1. Загрузить картинку с ресайзом и сохранить путь в базе для использования его как картинки большого размера.
2. на основе п.1 сделать ресайз для использования как картинки thumbnail.

Вопрос: Как логичнее и практичнее для пункта 2:
2.1) Записать в базу этот путь

2.2) Сохранить на диск этот отресайзенный файл с добавлением префикса в это имя файла , а использовать для создания url – url из п.1 + префикс

Спасибо

Офлайн

#2 Фев. 12, 2009 19:44:53

st00nsa
От:
Зарегистрирован: 2009-01-14
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Upload файла и url к нему

у меня подобный код, помоему я его гдето стырил…

class Profile_list(models.Model):
thumbnail = models.ImageField(upload_to='files/avas/thumb/', blank=True, null=True, editable=False)
avatar=models.ImageField(upload_to="files/avas/", verbose_name="Аватар",blank=True)
def save(self, force_insert=False, force_update=False):
#get mtime stats from file

thumb_update = False
if self.thumbnail:
statinfo1 = os.stat(self.avatar.path)
statinfo2 = os.stat(self.thumbnail.path)
if statinfo1 > statinfo2:
thumb_update = True

if self.avatar and not self.thumbnail or thumb_update:
from PIL import Image

THUMB_SIZE = (50, 50)

#self.thumbnail = self.avatar

image = Image.open(self.avatar.path)

if image.mode not in ('L', 'RGB'):
image = image.convert('RGB')

image.thumbnail(THUMB_SIZE, Image.ANTIALIAS)
(head, tail) = os.path.split(self.avatar.path)
(a, b) = os.path.split(self.avatar.name)

if not os.path.isdir(head + '/thumbs'):
os.mkdir(head + '/thumbs')

image.save(head + '\\thumbs\\' + tail)

self.thumbnail = a + '/thumbs/' + b
super(Profile_list, self).save()



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version