1. 将图像以二进制的形式打开,进行base64编码,服务器端接收后将数据保存在缓存区并利用PIL打开存在缓存区的数据得到所需图像,具体如下:
1 在客户端: 2 with open(‘1.jpg‘,‘rb‘) as f: 3 base_s=base64.b64encode(f.read()).decode() # 将图片以二进制的形式读入,并编码成base64,最后转换为str 4 data={‘image‘:base_s} 5 response=requests.post(url,data=data) 6 7 在服务器端的方法方法中: 8 from io import BytesIO 9 from PIL import Image 10 from flask import Flask,request 11 from flask_restful import Api, Resource, reqparse 12 app=Flask(__name__) 13 14 @app.route(‘/‘,methods=[‘GET‘,‘POST‘]) 15 def func(): 16 img= request.form.get(‘image‘) #方法一 从客户端获取数据 17 18 parser = reqparse.RequestParser() #方法二 从客户端获取数据 19 parser.add_argument(‘image‘, type=str, required=True,help=‘imgString must be Base64 string‘) 20 args = parser.parse_args() 21 img = args[‘image‘] 22 23 base_s1=base64.b64decode(img.encode()) #将str转换为bytes,并进行base64解码,得到bytes类型 24 buf=BytesIO() #内存中创建一个buf,用于存储图像文件内容 25 buf.write(base_s1) #将图像文件内容写入到该buf中,该buf相当于一个临时文件 26 buf.seek(0) #将文件指针放在文件开头 27 data=Image.open(buf).convert(‘RGB‘) #将buf作为文件名,读取该文件,并转换成RGB 28 print(data) #Image格式的文件数据 29 data=np.array(data) #将图像数据转换成array 30 print(data) 31 return ‘ok‘
原文:https://www.cnblogs.com/havelucky/p/13632388.html