Python 使用PIL在App Engine上绘制图像

Python 使用PIL在App Engine上绘制图像,python,google-app-engine,python-imaging-library,Python,Google App Engine,Python Imaging Library,我已经读过主题“” 下面的代码将显示一个损坏的图像,我应该如何更正 class TestImg(webapp2.RequestHandler): def get(self): text_img = Image.new('RGBA', (800,600), (0, 0, 0, 0)) draw = ImageDraw.Draw(text_img) draw.text((0, 0), 'HELLO TEXT', font=ImageFont.l

我已经读过主题“”

下面的代码将显示一个损坏的图像,我应该如何更正

class TestImg(webapp2.RequestHandler):
    def get(self):
        text_img = Image.new('RGBA', (800,600), (0, 0, 0, 0))
        draw = ImageDraw.Draw(text_img)
        draw.text((0, 0), 'HELLO TEXT', font=ImageFont.load_default())
        self.response.headers['Content-Type'] = "image/png"
        self.response.write(draw)

无法将您拥有的绘图对象传递回浏览器,因为它本身不是png


您需要调用draw.save()并向其传递一个StringIO对象以将文件写入。(您还需要提供文件类型)。然后,您将
self.response.write(the_stringio.getvalue())
根据Tim Hoffman所说,您的类将如下所示:

import StringIO

class TestImg(webapp2.RequestHandler):
    def get(self):
        text_img = Image.new('RGBA', (800,600), (0, 0, 0, 0))
        draw = ImageDraw.Draw(text_img)
        draw.text((0, 0), 'HELLO TEXT', font=ImageFont.load_default())

        output = StringIO.StringIO()
        text_img.save(output, format="png")
        text_layer = output.getvalue()
        output.close()

        self.response.headers['Content-Type'] = 'image/png'
        self.response.write(text_layer)

谢谢你的快速回复!我会再试一次。:-)