2

我正在使用带有 Python 和 Jinja 的 Google App Engine 作为模板。在我的 HTML 模板中,我有这段代码,它允许用户选择一个文件(图片):

    <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 数据类型的方法,以便对其进行图像处理。提前致谢!

4

1 回答 1

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()
于 2013-11-06T15:29:56.697 回答