我正在使用带有Python和Jinja的Google App Engine作为模板。在我的HTML模板中,我有这段代码,允许用户选择文件(Image):
<form action="/step2" enctype="multipart/form-data" method="post">
<input type="file" name="datafile" size="40">
<input type="submit" value="upload" >
</form>
发布后,我可以通过self.request.get('datafile')获取图像,这似乎是二进制数据类型('str')。我将它放入数据库,我可以用以下方式显示:
self.response.out.write('<div><img src="img?img_id=%s"></img>' % userimages.key())
我正在努力找到一种方法将其转换为PIL.Image数据类型,以便用它进行图像处理。提前谢谢!
答案 0 :(得分:7)
将字符串放在StringIO
对象中:
from cStringIO import StringIO
imgfile = StringIO(self.request.get('datafile'))
img = Image.open(imgfile)
所有PIL需求都是类似文件的对象; StringIO
为此源提供来自给定字符串的实际数据。
在另一个方向,让PIL
写入StringIO
对象,但您需要指定使用的格式:
imgfile = StringIO()
img.save(imgfile, format='PNG')
imagestring = imgfile.getvalue()