Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Несколько изображений в моделе с кропом картинок [RSS Feed]

#1 Март 9, 2012 13:01:20

TheVampire
От:
Зарегистрирован: 2010-04-07
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Несколько изображений в моделе с кропом картинок

Доброго времени суток.
Столкнулся с задачей создания карточки товара и есть необходимость в прикреплении нескольких (может быть разное кол-во) изображений к модели карточки товара с кропом этих изображений при загрузке.
Какие варианты реализации могут быть ?



Офлайн

#2 Март 9, 2012 21:21:37

fashust
От:
Зарегистрирован: 2011-07-17
Сообщения: 30
Репутация: +  3  -
Профиль   Отправить e-mail  

Несколько изображений в моделе с кропом картинок

ну в плане моделей можно что-то типа такого:

class MyModel(models.Model):
"""

"""
bla-bla-bla

class MyModelImages(models.Model):
"""
images for work
"""
mymodel = models.ForeignKey(MyModel, unique=False)
image = models.ImageField()
а для кропа https://github.com/sorl/sorl-thumbnail

если уж вообще красиво делать то можно и http://www.uploadify.com/ прикрутить



import this

Офлайн

#3 Март 10, 2012 15:06:34

Imposeren
От:
Зарегистрирован: 2009-04-06
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

Несколько изображений в моделе с кропом картинок

sorl-thumbnail для кропа не годится, по крайней мере я что-то не нашел способа как вырезать кусок в нужных координатах.
Если надо просто под конкретный “формат” уменьшить, то конечно подрежет как надо.



Офлайн

#4 Март 10, 2012 19:30:10

fashust
От:
Зарегистрирован: 2011-07-17
Сообщения: 30
Репутация: +  3  -
Профиль   Отправить e-mail  

Несколько изображений в моделе с кропом картинок

Imposeren
ля кропа не годится, по крайней мере я что-то не нашел способа как вырезать кусок в нужных координатах.
Ну в таком случае вам PIL и ручками писать кропанье.



import this

Офлайн

#5 Март 11, 2012 14:53:16

py
От:
Зарегистрирован: 2011-02-27
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Несколько изображений в моделе с кропом картинок

Сталкивался с такой задачей. Писал декоратор для метода сохранения модели:

def crop_and_resize(crop_fields=('image',), 
resize_to=(800, 600),
crop_to=(188, 190)):
def _crop_and_resize(func):
def wrapper(obj, *a, **kw):
output = func(obj, *a, **kw)
for field in obj._meta.fields:
if isinstance(field, ImageField):
try:
path = getattr(getattr(obj, field.name), 'path')
img = Image.open(path)
if hasattr(obj, field.name+'_xywh') \
and field.name in crop_fields:
x, y, w, h = (
int(x) for x in getattr(obj, field.name+'_xywh').split(';'))
img = img.crop((x, y, x+w, y+h))
if img.size > crop_to:
img = img.resize(crop_to, Image.ANTIALIAS)
img.save(path+'_thumb.jpg', format='JPEG', quality=100)
else:
if img.size > resize_to:
img.thumbnail(resize_to, Image.ANTIALIAS)
img.save(path, format='JPEG', quality=100)
except: pass
return output
return wrapper
return _crop_and_resize
Только нужно в форме создать поля для передачи координат обрезки и передавать их в метод сохранения модели. Ну, понятно что координаты должны задаваться джаваскриптом.



Отредактировано (Март 11, 2012 14:59:43)

Офлайн

  • Начало
  • » Django
  • » Несколько изображений в моделе с кропом картинок[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version