// 获取拍照按钮和视频元素 const takeBtn = document.getElementById('take'); const video = document.getElementById('v'); // 点击拍照按钮时触发 takeBtn.addEventListener('click', function() { // 获取 canvas 元素和图像元素 const canvas = document.getElementById('canvas'); const photo = document.getElementById('photo'); // 将视频的帧画面绘制到 canvas 中 canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height); // 将 canvas 转换为 base64 编码的图像数据 const imageData = canvas.toDataURL('image/jpeg'); // 发送 AJAX 请求上传图像数据 const xhr = new XMLHttpRequest(); xhr.open('POST', 'http://localhost:5001/static/picture'); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.onload = function() { console.log('上传成功'); }; xhr.onerror = function() { console.error('上传失败'); }; xhr.send('image=' + encodeURIComponent(imageData)); // 将图像元素的 src 属性设置为 base64 编码的图像数据 photo.setAttribute('src', imageData); }); 后端flask怎么接受这个图片
时间: 2024-04-03 11:36:07 浏览: 43
在 Flask 中接收 AJAX 上传的图片数据,可以使用 `request` 对象的 `files` 属性获取上传的文件,然后将其保存到指定的路径。以下是一个示例代码:
```python
from flask import Flask, request
import os
app = Flask(__name__)
@app.route('/static/picture', methods=['POST'])
def save_picture():
# 获取上传的图片文件
image_file = request.files['image']
# 获取保存图片的路径
save_path = os.path.join(app.static_folder, 'picture')
# 如果路径不存在,则创建它
if not os.path.exists(save_path):
os.makedirs(save_path)
# 保存图片文件
image_file.save(os.path.join(save_path, image_file.filename))
return '上传成功'
```
在上述代码中,我们使用 Flask 的 `request` 对象获取了上传的图片文件,然后将其保存到指定的路径。需要注意的是,上传的文件是以 `POST` 方式发送的,因此需要使用 `request.files` 属性获取文件对象。另外,为了将文件保存到正确的路径,我们使用了 Flask 的 `app.static_folder` 属性获取静态文件夹的路径,然后拼接出保存图片的具体路径。
阅读全文