【问题标题】:Flask app -how to display an image generated from within the app?Flask app - 如何显示从应用程序内生成的图像?
【发布时间】:2020-10-12 09:32:00
【问题描述】:

所以我有一些 python 代码可以在我的 Flask 应用程序中生成图像(可以在 JPG、PNG 等中生成),我想在我的 Flask 应用程序上显示该图像。问题是它需要存在于“静态”文件夹中, 它是“只读的” - 所以我无法在其中创建图像。 我可以让“url_for”在其他目录中查找吗?或者以某种方式在运行时将我的图像文件写入“静态”文件夹?

【问题讨论】:

    标签: flask url-for


    【解决方案1】:

    我在我的一个宠物项目中遇到了类似的问题。我不确定是否有更好的方法来做到这一点,但我设法通过在 base64 中编码图像并通过render_template() 直接将图像标签传递给 html 文件来解决它。本质上:

    import io
    
    def serve_pil_image(pil_img):
    
        img_io = io.BytesIO()
        pil_img.save(img_io, 'jpeg', quality=100)
        img_io.seek(0)
        img = base64.b64encode(img_io.getvalue()).decode('ascii')
        img_tag = f'<img src="data:image/jpg;base64,{img}" class="img-fluid"/>'
        return img_tag
    

    在你的烧瓶应用中:

    from PIL import Image
    
    @app.route('/')
    def index():
        my_image = Image.open(image_file)
        img_tag=serve_pil_image(my_image)
        return render_template('index.html', image=img_tag)
    

    在你的 html 中:

    {{image|safe}}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-27
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多