python Http服务,传输base64图片
使用flask可以制作自己的http服务,前端post发送request访问请求,同过base64编码图片传输至服务器端进行处理:图像检测识别等。
图像base64编码解码代码:
-
import base64
-
###np 图片编码成base64形式
-
def image_to_base64(image_mat):
-
image = cv2.imencode('.jpg', image_mat)[1]
-
image_code = str(base64.b64encode(image), 'utf-8')
-
return image_code
-
###base64图片解码成numpy图
-
def base64_to_image(imgBase64):
-
img_data = base64.b64decode(imgBase64)
-
bs = np.asarray(bytearray(img_data), dtype='uint8')
-
img = cv2.imdecode(bs, cv2.IMREAD_COLOR)
-
return img
Http服务端代码:
-
from tqdm import tqdm
-
import requests
-
import sys
-
import base64
-
import numpy as np
-
import cv2,os
-
from flask import Flask, request
-
import argparse
-
import json
-
-
app = Flask(__name__)
-
-
-
class RestHelper(object):
-
def __init__(self, data, id):
-
self.data = data
-
self.id = id
-
def toJson(self):
-
return {'status': '1', 'data': self.data, 'taskId':self.id}
-
def failure(self):
-
return {'status': '0','data': self.data, 'taskId':self.id}
-
def error(self):
-
return {'status': '0','data': self.data, 'taskId':self.id}
-
-
class dataEnconding(json.JSONEncoder):
-
def default(self, o):
-
#if isnumber(o):
-
# return str(o)
-
if isinstance(o, float):
-
return str(float(o))
-
if isinstance(o, int):
-
return str(o)
-
-
def proc(img):
-
pass
-
-
-
def my_service():
-
print("------------my_service start----------------")
-
data = request.json
-
####接收到的信息
-
print("Request dict data key is: \n", data.keys(), type(data))
-
img = data["base64Img"]
-
##process img now-----
-
proc(img)
-
###process down
-
taskId=data["taskId"]
-
##服务返回结果信息------
-
q = RestHelper({"respose": "hello world!"}, id=taskId).toJson()
-
return json.dumps(q, cls=dataEnconding)
-
-
def parse_args():
-
parser = argparse.ArgumentParser(description='start service')
-
parser.add_argument('--port', '-p', default='4444', help='port')
-
parser.add_argument('--config', '-c', default='./iniFile/ini.cfg', help='rabbitMQ info')
-
args = parser.parse_args()
-
return args
-
-
if __name__ == '__main__':
-
args = parse_args()
-
port = args.port
-
print(port)
-
app.run(debug=False, host='0.0.0.0', port=port, threaded=False, processes=8)
发送访问请求:
-
from urllib import request, parse
-
import requests
-
import base64
-
import json
-
from urllib.request import urlretrieve
-
import os
-
import cv2
-
import base64
-
import numpy as np
-
import time
-
-
-
def image_to_base64(image_mat):
-
image = cv2.imencode('.jpg', image_mat)[1]
-
image_code = str(base64.b64encode(image), 'utf-8')
-
return image_code
-
-
if __name__ == '__main__':
-
url = "http://127.0.0.1:4444/my_service"
-
-
testImgp = "imgs/1.jpg"
-
img = cv2,imread(testImgp)
-
headers = {'content-type': "application/json"}
-
-
data = {
-
"taskId": 10086,
-
"base64Img":image_to_base64(img )
-
}
-
-
response = requests.post(url, json=json.loads(json.dumps(data)), headers=headers)
-
if response:
-
result = json.loads(str(response.content, 'utf-8'))
-
print(result)
也可以从headers中传入某些key value,在服务端使用request.headers.get(yourKEY)获取到
比如发送头
headers = {'content-type': "application/json", "taskId": taskId}
接受时候采用下面get key形式获取到值:
ID = str(request.headers.get('taskId'))
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfhjbf
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01