3

「 App Engine、PIL、オーバーレイ テキスト」のトピックを読みました。

以下のコードは壊れた画像を表示します。どうすれば修正できますか?

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)
4

2 に答える 2

6

ティム・ホフマンが言ったことに基づいて、クラスは次のようになります。

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)
于 2013-03-15T15:34:08.650 に答える
2

描画オブジェクトは png ではないため、ブラウザに戻すことはできません。

draw.save() を呼び出して、ファイルを書き込む StringIO オブジェクトを渡す必要があります。(ファイルの種類も指定する必要があります)。あなたはその後self.response.write(the_stringio.getvalue())

于 2013-03-15T15:19:36.317 に答える