发布于2019-08-07 14:27 阅读(4203) 评论(0) 点赞(0) 收藏(3)
环境:python3
库:flask
其实从本质上来说,无论是图片还是文字或者字符,都是数据,即最原始的一串0和1组成的二进制数据,API接收或者返回图片,本质上也就是接收或返回一段数据流。
向服务器发送图片,大致步骤就是先将以二进制的方式打开,再post到服务器。
从服务器接收图片,我这边的做法是服务器端将图片转化成base64字节流形式返回,客户端收到这串字节数据,然后通过base64将字节转化为图片。
服务器端代码:
import base64
from flask import request
from flask import Flask
import os
app=Flask(__name__)
# 定义路由
@app.route("/photo", methods=['POST'])
def get_frame():
# 接收图片
upload_file = request.files['file']
# 获取图片名
file_name = upload_file.filename
# 文件保存目录(桌面)
file_path=r'C:/Users/Administrator/Desktop/'
if upload_file:
# 地址拼接
file_paths = os.path.join(file_path, file_name)
# 保存接收的图片到桌面
upload_file.save(file_paths)
# 随便打开一张其他图片作为结果返回,
with open(r'C:/Users/Administrator/Desktop/1001.jpg', 'rb') as f:
res = base64.b64encode(f.read())
return res
if __name__ == "__main__":
app.run()
客户端代码:
import requests
import base64
# API地址
url = "http://127.0.0.1:5000/photo"
# 图片地址
file_path='C:/Users/Administrator/Desktop/111.jpg'
# 图片名
file_name=file_path.split('/')[-1]
# 二进制打开图片
file=open(file_path,'rb')
# 拼接参数
files = {'file':(file_name,file,'image/jpg')}
# 发送post请求到服务器端
r = requests.post(url,files = files)
# 获取服务器返回的图片,字节流返回
result = r.content
# 字节转换成图片
img = base64.b64decode(result)
file = open('test.jpg','wb')
file.write(img)
file.close()
作者:343489399
链接:https://www.pythonheidong.com/blog/article/11333/da3f9b0c1462d03e9960/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!