使用PIL在App Engine上绘制图像

3

我已经阅读了主题“App Engine, PIL and overlaying text”。

下面的代码将显示一张损坏的图片,我该如何纠正?

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)
2个回答

6
建立在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)

2

你所拥有的绘制对象不能直接以png形式返回给浏览器。

需要调用draw.save()方法,并传入一个StringIO对象来写入文件(同时需要指定文件类型)。然后使用self.response.write(the_stringio.getvalue())将其返回。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接