我正在创建一个API来接收和处理图像。我必须接收bytearray格式的图像。以下是我要发布的代码:
方法1 将图像发布到api
with open("test.jpg", "rb") as imageFile:
f = imageFile.read()
b = bytearray(f)
url = 'http://127.0.0.1:5000/lastoneweek'
headers = {'Content-Type': 'application/octet-stream'}
res = requests.get(url, data=b, headers=headers)
##print received json response
print(res.text)
我的API:在API接收图像
^{pr2}$在我的api中,我尝试了request.get['data']
request.params['data']
….我得到了object has no attribute
错误。在
我尝试将bytearray与图像的宽度和高度一起传递给json,如下所示:
方法2:将图像发布到api
data = '{"IMAGE":b,"WIDTH":16.5,"HEIGHT":20.5}'
url = 'http://127.0.0.1:5000/lastoneweek'
headers = {'Content-Type': 'application/json'}
res = requests.get(url, data=data, headers=headers)
把我在API的get函数改成
在api接收图像
@app.route('/lastoneweek', methods=['GET'])
def get():
data=request.get_json()
w = data['WIDTH']
h = data['HEIGHT']
但收到以下错误例如:
TypeError: 'LocalProxy' does not have the buffer interface
在服务器.py文件:
与客户端.py文件格式:
^{pr2}$我引用了这个链接:http://docs.python-requests.org/en/master/user/advanced/#post-multiple-multipart-encoded-files 这解决了第一个问题。在
行
image = Image.open(io.BytesIO(img))
错误,因为img
是不应传递给的<class 'werkzeug.datastructures.FileStorage'>
拜特西奥,因为它像这里提到的对象一样使用字节:https://docs.python.org/3/library/io.html#io.BytesIO,而这里对类似对象的字节的解释:https://docs.python.org/3/glossary.html#term-bytes-like-object 所以,与其这么做。将文件名直接传递给cv2.imread(img.filename)
解决了这个问题。在相关问题 更多 >
编程相关推荐