<button id="take">拍照</button> <br /> <video id="v" style="width: 640px;height: 480px;"></video> <canvas id="canvas" style="display:none;"></canvas> <br /> <img src="http://placehold.it/640&text=Your%20image%20here%20..." id="photo" alt="photo"> 前端拍照组件,后端怎么保存这图片,用flask来写
时间: 2023-07-19 08:39:24 浏览: 107
在 Flask 中,可以使用 Flask 的 request 对象来获取前端传来的文件(包括图片),然后使用 Python 的 Pillow 库来处理图片并保存至指定位置。
以下是一个简单的 Flask 代码示例,用于接收前端通过 POST 请求传来的图片并保存:
```python
from flask import Flask, request
from PIL import Image
app = Flask(__name__)
@app.route('/save_photo', methods=['POST'])
def save_photo():
# 获取前端传来的图片
file = request.files['photo']
# 打开图片并处理
image = Image.open(file)
# 保存图片
image.save('/path/to/save/photo.jpg')
return 'Photo saved successfully!'
if __name__ == '__main__':
app.run()
```
在前端部分,可以使用 JavaScript 来通过 AJAX 请求将图片发送到 Flask 的后端,代码示例如下:
```javascript
document.getElementById('take').addEventListener('click', function() {
// 获取 video 元素
var video = document.getElementById('v');
// 获取 canvas 元素
var canvas = document.getElementById('canvas');
// 获取 photo 元素
var photo = document.getElementById('photo');
// 在 canvas 上绘制 video 中的图像
canvas.getContext('2d').drawImage(video, 0, 0, 640, 480);
// 将 canvas 转换成图片,并将图片显示在 photo 元素上
photo.src = canvas.toDataURL('image/jpeg');
// 发送图片到后端保存
var xhr = new XMLHttpRequest();
xhr.open('POST', '/save_photo', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText);
}
}
xhr.send('photo=' + photo.src);
});
```
需要注意的是,在发送图片到后端保存时,需要将图片转换成 Base64 编码的字符串格式,并通过 POST 请求发送给后端。
阅读全文