使用Python Flask,在mysql数据库的网页上显示图像

时间:2018-01-18 04:09:27

标签: python

我使用python flask创建了基于Web的应用程序,用于收集学生信息。

我创建了一个'学生'数据库,我通过创建'图像'表来收集学生资料,包括他们的照片 对于'photo'字段,我在mysql中使用BLOB数据类型。

这是我的代码:

<div class="form-group">
    <%= f.label "Date:" %>
    <%= f.date_field :starts_at, class: "form-control"%>
  </div>



 <div class="form-group">
   <%= f.label "Time:" %>
   <%= f.time_field :starts_at, class: "form-control"%>
 </div>

我想将图像渲染为html文件,并希望在网页上显示   这是我的HTML代码:

import mysql.connector
import sys
from PIL import Image
import base64
import six
import io
import PIL.Image
import pymysql

from flask import Flask,render_template,request,flash
app=Flask(__name__)
app.secret_key = 'dont tell anyone'


@app.route('/')
def display_image():
    db = mysql.connector.connect(user='root', password='######',
                                  host='localhost',
                                  database='students')
    cursor=db.cursor()
    sql1='select photo from images'
    cursor.execute(sql1)
    #db.commit()
    data=cursor.fetchall()
    #print type(data[0][0])
    file_like=io.BytesIO(data[0][0])
    img=PIL.Image.open(file_like)
    db.close()
    return render_template("home.html",data=file_like)

if __name__=="__main__":
    app.run(debug=True)

网页上的结果如下:

enter image description here

我想在网页上显示图片本身,但它以二进制模式显示。

您能否请我解释一下这个问题或建议任何帮助我使用python flask从mysql检索图像并在网页上显示的文章,或者如果可能的话,您能否提供代码。

感谢你 带着敬意, Ramesh V

1 个答案:

答案 0 :(得分:0)

您正在将流传递到模板,而不是图像。

Python编码,假设I / O将写入.jpg:

import base64
imgdata = base64.b64decode(file_like)
filename = 'some_image.jpg'  # I assume you have a way of picking unique filenames
with open(filename, 'wb') as f:
    f.write(imgdata)
来自@rmunn的

回复:How to convert base64 string to image?

使用您的图像在您的数据库中存储扩展名是一个好主意,这样您就知道如何在退出时正确编码它们。实现内容管理系统会更好,您可以通过url获取文件,然后将这些网址存储在数据库中。预先做更多工作,但将流保存在数据库之外,并将文件系统保存在文件系统中,这些文件属于它们所属的文件。