更具体地说,我想更改通过Django ImageField上传的图像的文件类型。
我目前的想法是创建一个自定义ImageField并覆盖save方法来操作该文件。
我因为PIL图像实例而无法获取内存文件。
感谢您的帮助。
答案 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)