如何从内存文件中创建PIL图像?

时间:2011-01-07 17:45:28

标签: python django python-imaging-library django-models

更具体地说,我想更改通过Django ImageField上传的图像的文件类型。

我目前的想法是创建一个自定义ImageField并覆盖save方法来操作该文件。

我因为PIL图像实例而无法获取内存文件。

感谢您的帮助。

2 个答案:

答案 0 :(得分:19)

你试过StringIO吗?

查看文档http://effbot.org/imagingbook/introduction.htm#more-on-reading-images

#Reading from a string 
import StringIO

im = Image.open(StringIO.StringIO(buffer))

答案 1 :(得分:15)

请注意,Django的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 documentation