mysql 如何使用flask显示数据库中的图像

ycl3bljg  于 2023-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(177)

我正在和一些朋友做一个项目,我们正在做一个篮球锦标赛的网站,任何人都可以创建一个帐户,该帐户将有一个默认的图像时,创建,但我的问题是如何显示该图像在页面上。我现在要做的是
(some葡萄牙语)
querys.py:
将图片存储在变量中

from matplotlib import image as img

foto_perfil = img.imread("website\static\img\pngwing.com.png")

当帐户被创建图片存储在数据库(它的工作)

`def inserir_conta_jogador(email, password, coach, player):
    cursor = mysql.connection.cursor()
    inserir_conta_no_banco = cursor.execute(""" INSERT INTO conta (email, password, coach, player, picture) VALUES (%s, %s, %s, %s, %s)""", (email, password, coach, player, picture))
    mysql.connection.commit()
    cursor.close()`

从现在开始我不知道这些是否有用
从数据库获取图片(“foto”)

def get_foto(id):
    cursor = mysql.connection.cursor()
    get_foto = cursor.execute(""" SELECT foto FROM conta WHERE id = %s""", [id])
    get_foto_fecth = cursor.fetchone()
    return get_foto

从登录的用户获取图片并将其存储为HTML页面的“foto”

@views.route('/', methods=['GET', 'POST'])
def home():
    if "user_id" in session:
        user = session["user_id"]
        foto = get_foto(user)
        return render_template("index.html", user=user, foto=foto)
    return render_template("index.html")

在页面上显示:

{% if user %}
  <h1> ID LOGGED: {{ user }}</h1>
  <img src="{{foto}}">
  {% else %}
  <h1> NOBODY LOGGED IN </h1>
  {% endif %}

当我转到该页面时,图像未显示
我应该在代码中更改什么?
在页面上显示图像

vptzau2j

vptzau2j1#

我认为你根本不需要matplotlib

import base64
with open("/path/to/img.png","rb") as f:
    data_uri = f"data:image/png;base64,{base64.b64encode(f.read()).decode()}"
    print(data_uri)
    # test by copy pasting data_uri into your browser
    # save data_uri somewhere (it does not have to be blob since it is now text)

然后再

<img src={{data_uri}} />

但我建议遵循flasks file upload guide,不要将图像保存在数据库中,而是使用File数据库模型类型

相关问题