Как я могу создать изображение PIL из файла в памяти? - PullRequest
10 голосов
/ 07 января 2011

В частности, я хочу изменить тип файла изображения, загруженного через Django ImageField.

В настоящее время я думаю о создании собственного ImageField и перезаписи метода сохранения для управления файлом.

У меня проблемы с получением файла в памяти, потому что экземпляр PIL Image.

Спасибо за помощь.

Ответы [ 2 ]

19 голосов
/ 07 января 2011

Вы пробовали StringIO?

см. Документы http://effbot.org/imagingbook/introduction.htm#more-on-reading-images

#Reading from a string 
import StringIO

im = Image.open(StringIO.StringIO(buffer))
15 голосов
/ 07 января 2011

Обратите внимание, что ImageField Джанго наследует метод open от FieldFile.Это возвращает объект потока, который может быть передан в PIL Image.open (стандартный фабричный метод для создания Image объектов из потока изображений):

stream = imagefield.open()
image = Image.open(stream)
stream.close()
# ... and then save image with: image.save(outfile, format, options)

См. Документация PIL Image .

...