更具体地说,我想更改通过Django ImageField上传的图像的文件类型。如何从内存文件创建PIL图像?
我目前的想法是创建一个自定义的ImageField并覆盖保存方法来操纵文件。
我遇到了麻烦的文件到内存中,因为一个PIL Image实例。
感谢您的帮助。
更具体地说,我想更改通过Django ImageField上传的图像的文件类型。如何从内存文件创建PIL图像?
我目前的想法是创建一个自定义的ImageField并覆盖保存方法来操纵文件。
我遇到了麻烦的文件到内存中,因为一个PIL Image实例。
感谢您的帮助。
注意,Django的ImageField
继承FieldFile
的open
方法。这将返回可以被传递到PIL的Image.open
(标准工厂方法用于创建从图像流Image
对象)一个流对象:
stream = imagefield.open()
image = Image.open(stream)
stream.close()
# ... and then save image with: image.save(outfile, format, options)
你有没有试过StringIO?
看到文档http://effbot.org/imagingbook/introduction.htm#more-on-reading-images
#Reading from a string
import StringIO
im = Image.open(StringIO.StringIO(buffer))
刚刚意识到这一点。谢谢。 – Zach 2011-01-07 18:46:35