在Flask框架中将图片数据传给WEB页面

在Flask框架中将cv2/PIL的图像类型的数据传送给WEB页面,通过将图像数据转化为字节流,然后再使用base64.b64encode进行编码进行发送,在在js中通过指定图片的类型来接受。

python代码

接受页面发来的图像文件并发送一张新的图像数据 

from PIL import Image
import base64
import io

@app.route("/image", methods=["POST"])
# 创建一张图片并返回Base64编码的图片数据
def get_detection():
    image = request.files["file"]        # 读取接受的图片
    img_bytes = image.read()
    image = Image.open(io.BytesIO(image_bytes))   
    img = Image.new('RGB', (200, 200), color='red')    # 创建一张新的图片

    # 将图片转换为字节流
    buffered = io.BytesIO()
    img.save(buffered, format="JPEG")
    img_bytes = buffered.getvalue()

    # 对字节流进行Base64编码
    encoded_image = base64.b64encode(img_bytes)
return img_stream    

 JavaScript代码

在JavaScript中将服务器发送来的图像数据进行解码并替换页面中的图片

// 按键绑定函数
function detect() {
    "use strict";
    let fileObj = $("#load_img")[0].files[0];    // 获取ID为"load_img"的对象
    let form = new FormData();    //创建Form对象,将图片POST到服务器
    let img_src;
    form.append("file", fileObj);
    $.ajax({
        type: 'POST',
        url: "imageDetect",        // POST的路由
        data: form,
        async: false,
        processData: false,
        contentType: false,
        success: function (res){    // 回调函数,res为服务器接收的base64类型的图像数据
            img_src = "data:image/png;base64,"+res;
            $("#img").attr("src",img_src);   // 替换ID为"img"对象的图像为服务器发送的图像
        },    
    });

}

 

Flask 中,要读取 web 前端页面上的某个信息,可以通过 POST 请求将数据传递到后端服务器,然后在 Flask 中使用 request 对象来获取数据。 具体来说,可以在前端页面中使用 AJAX 技术将数据以 POST 请求发送到后端服务器的指定路由,然后在 Flask 的路由函数中使用 request 对象来获取数据。例如以下代码可以在前端页面中输入一个字符串并且在后端服务器中将其打印出来: 前端页面 index.html: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Flask AJAX Demo</title> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> </head> <body> <input type="text" id="input"> <button id="submit">Submit</button> <div id="result"></div> <script> $(function() { $('#submit').click(function() { $.ajax({ url: '/process', type: 'POST', data: {input: $('#input').val()}, success: function(result) { $('#result').html(result); } }); }); }); </script> </body> </html> ``` Flask 后端服务器 app.py: ``` from flask import Flask, request app = Flask(__name__) @app.route('/') def index(): return app.send_static_file('index.html') @app.route('/process', methods=['POST']) def process(): input_string = request.form['input'] print(input_string) return input_string if __name__ == '__main__': app.run() ``` 在浏览器中打开 http://localhost:5000/ 即可看到一个输入框和一个提交按钮,输入一些文字并且点击提交按钮,后端服务器会将这些文字打印出来,并且在页面上显示出来。 需要注意的是,在实际开发中,需要对从前端页面传递过来的数据进行验证和过滤,避免恶意用户提交不安全的数据。另外,如果需要将数据存储到数据库中,也需要使用 Flask 的 ORM 或者 SQLALchemy 等库来进行操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值