Flask使用
python后端与C# WinForm前端连接
毕设需要做一个C#写的前端应用,后端算法是用python训练的。所以,一直在找怎么将这两者结合起来,即如何将python算法部署到winform前端。
硬件局限:笔记本没有GPU,只能使用CPU;算法必须使用GPU跑。 查了大量的资料,终于在flask论坛上找到了答案。同时,找到了一个链接。所以最后选择了使用Flask将python部署到Winform。
代码部分直接放到这里:
```python
save_path = './imgt/test/' # 保存后端传过来的井点图片路径
# 服务返回
# 接收图片并保存,调用模型返回沉积相----接的是byte[],传的也是byte[]
@app.route('/upload_image/',methods=['POST'])
def get_image():
# 接收前端传来的图片,并存入且取名 ./imgt/test/1.png
startTime = time.time()
# 获取到post请求传来的byte[]数据
result = request.data
# 将bytes结果转化为字节流
bytes_stream = BytesIO(result)
# 读取到图片
image = Image.open(bytes_stream)
if image is None:
print("nothing found!")
if not os.path.exists(save_path):
os.makedirs(save_path)
else: # 加上覆盖操作
shutil.rmtree(save_path)
os.makedirs(save_path)
image.save(save_path+'1.png')
print("图片上传成功!")
inputTime = time.time() - startTime
print('上传图片时间为: %f' % inputTime)
# 测试井点图,生成沉积相
predict_image()
# 返回文件夹中的图片给前端----可以传byte[]
output_image_data = open((output_save_path+'1.png'), "rb").read()
return output_image_data
output_wp_path = './out_wp/' # 井点图片保存路径
# 服务返回
# 接收元组数据列表并返回图片
@app.route('/upload_wpCo/', methods=['POST'])
def get_wpCo():
if request.method == 'POST':
# 获取前端传来的数据
receiveData = request.data.decode('utf-8')
para = str(receiveData)
print(receiveData)
# 对前端数据进行处理,改变成为我们需要的元组列表
array = str(para).split('#')
i = 1
l = []
while array[i]:
if i%3 == 1:
x = int(array[i])
elif i%3 == 2:
y = int(array[i])
else:
sa = int(array[i])
tup = (x, y, sa)
l.append(tup)
i += 1
print(l)
# 生成井点图片
gen_points_by_cor.main(l)
# 返回井点图片
output_wp_image_data = open((output_wp_path + '1.png'), "rb").read()
return output_wp_image_data
# 主函数
if __name__ == '__main__':
app.run("127.0.0.1", port=8080, debug=True)
|