使用 Python-Flask 模板引擎显示图像

Display image with Python-Flask template engine

我想通过 Flask 将二进制图像数据发送到模板(以避免浏览器缓冲)。 Python文件如下:

#!/usr/bin/python3
import base64
from flask import Flask,make_response,render_template

app = Flask(__name__)

@app.route('/')
def showdata():

    fp = open("sp.png","rb")
    sp = base64.b64encode(fp.read())
    fp.close()
    fp = open("sg.png","rb")
    sg = base64.b64encode(fp.read())
    fp.close()
    wav = None

    resp = make_response(render_template('index.html',sg=sg,sp=sp))
    
    return resp

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=3000,debug=True)

HTML 文件是:

<!DOCTYPE html>
<html>
  <head>
    <title>Show Timeswipe Measurements!</title>
  </head>

  <body>

    <!-- show data and spectrum -->
    <img id='spectrum' src='data:image/png;base64,{{ sp }}'>
  
    <!-- show spectrogram -->
    <img id='spectrogram' src='data:image/png;base64,{{ sg }}'>

    <!-- show wav -->

  </body>
</html>

图片未显示。 src是<img id='spectrum' src='data:image/png;base64,b&#39;iVBOR...,即图片开头好像多了一些字符b&#39;i.

通过模板引擎发送二进制图像数据的正确方法是什么。

好的,找到解决方案了。

修改代码如下

sp = base64.b64encode(fp.read()).decode()
sg = base64.b64encode(fp.read()).decode()

完成任务。