Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 23, 2013 10:36:03

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

Загрузка gif через POST

Доброго времени суток!
Возникла проблема. Нужно загрузить через POST gif анимацию. Если с простыми картинками все понятно, там это разруливается с помощью PIL:

img = request.FILES['image']
im = Image.open(img)
path = '/media_path/'
name = 'img_name'
im.save(path+name)
С gif такое не прокатывает, так как не сохраняется анимация.
Попробовал images2gif. Но ему нужен не сам request.FILES, а строка - путь до картинки. Пытаюсь сделать следующее:
 destination = open(settings.MEDIA_ROOT+'tmp/tmp.gif', 'wb+')
 for chunk in img.chunks():
      destination.write(chunk)
 frames = images2gif.readGif(settings.MEDIA_ROOT+'tmp/tmp.gif', False) 
 images2gif.writeGif(path+name, frames)

Но когда он пытается прочитать гифк(images2gif.readGif), то говорит:
“image file is truncated (127 bytes not processed)”
Хотя размеры исходного и загруженного файлов совпадают
Как можно решить проблему?
——-
С загрузкой проблему решил немного переписав саму функцию readGif, но теперь оно не записывает, ругается на “image has wrong mode”



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

Отредактировано barabansheg (Фев. 23, 2013 10:58:29)

Офлайн

#2 Фев. 24, 2013 10:34:24

nnmware
Зарегистрирован: 2012-07-21
Сообщения: 133
Репутация: +  13  -
Профиль   Отправить e-mail  

Загрузка gif через POST

Если вопрос стоит только в загрузке файла, зачем использовать PIL? Судя по коду никаких манипуляций с картинкой вы не делаете.

img = request.FILES['image']
path = 'media_path'
name = 'img_name'
file = open(os.path.join(path, name), "wb+")
for chunk in img.chunks():
      file.write(chunk)
file.close()

Офлайн

#3 Фев. 25, 2013 15:45:06

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

Загрузка gif через POST

Спасибо огромное! Чет не подумал:)



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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version