Найти - Пользователи
Полная версия: Ресайз картинки после или во время загрузки
Начало » Django » Ресайз картинки после или во время загрузки
1
lomach
Пожалуйста, помогите.
Нужно изменять размеры картинки сразу после или во время загрузки.
Получаю ошибку “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))

Наверное более правильно было бы изменять размеры уже сохраненной картинки, но я никак не соображу как это сделать.
barabansheg
А зачем 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) 
FishHook
А разве ImageField не решает подобные задачи автоматически?
barabansheg
Насколько я знаю - нет. Есть модуль тут.
lomach
Спасибо.
Умные люди подсказали, что надо переопределять метод save в модели.
Пример тут
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB