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

Zac*_*ach 10 python django django-models python-imaging-library

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

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

因为PIL Image实例,我无法获取内存文件.

谢谢您的帮助.

Xav*_*osa 19

你试过StringIO吗?

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

#Reading from a string 
import StringIO

im = Image.open(StringIO.StringIO(buffer))
Run Code Online (Sandbox Code Playgroud)


sco*_*fey 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)
Run Code Online (Sandbox Code Playgroud)

请参阅PIL Image文档.