Уведомления

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

#1 Ноя. 14, 2012 23:05:33

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Ресайз картинки после или во время загрузки

Пожалуйста, помогите.
Нужно изменять размеры картинки сразу после или во время загрузки.
Получаю ошибку “super(type, obj): obj must be an instance or subtype of type”

def upload(request):
     if request.method == 'POST':
        form = PhotoForm(request.POST, request.FILES)
        if form.is_valid():
            print form.errors
            from django.core.files.uploadedfile import InMemoryUploadedFile
            image = Image.open(request.FILES['ph_image'])
            super(Photo, image).thumbnail((200, 200), Image.ANTIALIAS)
            super(Photo, image).save
            form.save()
        return HttpResponseRedirect('/upload/')
    else:
         form = PhotoForm()
    img = Photo.objects.all()
    title = "Загрузка изображений"
    return render_to_response("upload.html", {'title': title, 'image_list': img, 'form': form,},
        context_instance=RequestContext(request))

Наверное более правильно было бы изменять размеры уже сохраненной картинки, но я никак не соображу как это сделать.




Django 1.8, БД MySQL 6
Debian Linux 7.0

Офлайн

#2 Ноя. 15, 2012 06:20:56

barabansheg
От:
Зарегистрирован: 2011-10-16
Сообщения: 114
Репутация: +  2  -
Профиль   Отправить e-mail  

Ресайз картинки после или во время загрузки

А зачем super использовать? Я делаю так:

img = request.FILES['photo']
path = settings.MEDIA_ROOT+'photos/'
name = hashlib.md5(str(time.time())).hexdigest()[:30]+'.'+re.split('\.',img.name)[1] # у каждой уникальное имя
im = Image.open(img)
im.thumbnail((200, 200), Image.ANTIALIAS)
im.save(path+name) 



Fidonet. Nod 2:5034/10. Идет набор. Подробности в личку.
Мой блог

Отредактировано barabansheg (Ноя. 15, 2012 06:21:10)

Офлайн

#3 Ноя. 15, 2012 06:40:39

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Ресайз картинки после или во время загрузки

А разве ImageField не решает подобные задачи автоматически?



Офлайн

#4 Ноя. 15, 2012 07:17:54

barabansheg
От:
Зарегистрирован: 2011-10-16
Сообщения: 114
Репутация: +  2  -
Профиль   Отправить e-mail  

Ресайз картинки после или во время загрузки

Насколько я знаю - нет. Есть модуль тут.



Fidonet. Nod 2:5034/10. Идет набор. Подробности в личку.
Мой блог

Офлайн

#5 Ноя. 15, 2012 20:15:44

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Ресайз картинки после или во время загрузки

Спасибо.
Умные люди подсказали, что надо переопределять метод save в модели.
Пример тут




Django 1.8, БД MySQL 6
Debian Linux 7.0

Офлайн

  • Начало
  • » Django
  • » Ресайз картинки после или во время загрузки[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version