如何在Flask中通过POST请求发送图像

时间:2020-11-02 16:39:38

标签: python numpy flask python-requests

我正在尝试将图像从1 Flask应用发送到另一个,即从1端点发送到另一个端点,但是我不知道需要执行什么转换才能正确发送和接收它。我正在使用以下代码,但在接收方获得了NoneType对象

发送方烧瓶应用代码

import requests

data = {}
data['image'] = # <image> 
res = requests.post('http://<IP>:<PORT>/', data = data)

接收器烧瓶应用代码

from flask import request
import numpy as np
import cv2 as cv

f1 = request.form.get('image')
print(type(f1))

f2 = np.fromstring(f1, np.uint8)
print(type(f2), f2.shape)

f3 = cv.imdecode(f2, cv.IMREAD_COLOR)
print(type(f3))

我尝试发送2种类型的图像。在接收方输出之后,发送<class 'PIL.Image.Image'>类型的图像产品

<class 'str'>
<class 'numpy.ndarray'> (62,)
<class 'NoneType'>

在接收方输出之后,发送<class 'numpy.ndarray'>类型的发送图像

<class 'str'>
<class 'numpy.ndarray'> (3,)
<class 'NoneType'>

1 个答案:

答案 0 :(得分:1)

使用requests.post(url, files={'image': open('image.jpg', 'rb')})发送图像,请参见https://requests.readthedocs.io/en/master/user/quickstart/#post-a-multipart-encoded-file

通过file = request.files['image']接收图像,例如将其存储在file.save('image.jpg')中。