【问题标题】:Python - Bottle & Pillow - Return image to browserPython - Bottle & Pillow - 将图像返回到浏览器
【发布时间】:2021-06-02 13:16:57
【问题描述】:

我使用 Bottle Framework 和 Pillow,我想动态生成图像并使用端点将其显示给浏览器。

我有:

try:
    img = Image.open("images/template.png")
    
    draw = ImageDraw.Draw(img)
    font = ImageFont.truetype("fonts/arial.ttf", 40)
    
    draw.text((23, 62), "Text", "#000", font=font)
    
    # image save works
    img.save("test_save.png")
    
    response.content_type = 'image/png'
    
    return io.BytesIO(img.tobytes())
except OSError as exception:
    print(exception)
    pass

保存的图片很完美,但是显示给浏览器的图片只是一个尺寸不好的空方块。

我查看了 Stackoverflow 以查找我写的内容,但我想我错过了什么?

【问题讨论】:

    标签: python python-imaging-library bottle


    【解决方案1】:

    我不在电脑前测试我的代码,但您需要返回一个 PNG 编码的图像,因此您需要告诉 PIL 写入 BytesIO 而不是写入磁盘。比如:

    from io import BytesIO
    
    # Write PIL Image to in-memory PNG
    membuf = BytesIO()
    img.save(membuf, format="png") 
    

    ...您现在可以发送membuf.getvalue(),如果您检查前几个字节,它们看起来与从磁盘中转储任何其他常规 PNG 文件时完全相同。

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 2016-02-03
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多